UITextView üçün klaviaturanı bir geri dönmə anahtarı ilə necə çıxarmaq olar?

İB-də təqdimat bizi qaytarma düyməsinə UITextView , UITextView üçün klaviatura yox olacaq. Amma əslində qaytarma anahtarı yalnız \ n kimi hərəkət edə bilər.

Bir düyməni əlavə edə və klaviaturanı gizlətmək üçün [txtView resignFirstResponder] istifadə edə bilərsiniz.

Ancaq UIButton əlavə etmək lazım deyil ki, klaviatura üzrə qaytarma düyməsinə bir hərəkət əlavə etmək üçün bir yol varmı?

361
01 апр. Chilly Zhong soruşdu 01 Apr 2009-04-01 04:48 '09 at 4:48 2009-04-01 04:48
@ 32 cavab
  • 1
  • 2

UITextView istifadəçi geri qaytarılmış UITextView bir UITextView malik deyil. Istifadəçi bir mətn xətti əlavə etməsini istəyirsinizsə, UITextField istifadə edin. UITextView üçün geri dönmə və klaviaturanı gizlətmək interfeys tövsiyələrini yerinə yetirmir.

Bunu etmək istəyirsinizsə belə, textView:shouldChangeTextInRange:replacementText: müraciət textView:shouldChangeTextInRange:replacementText: UITextViewDelegate və bu halda bir əvəzli mətn yoxdursa, klaviaturanı UITextViewDelegate .

Digər yollar da ola bilər, amma bunları bilmirəm.

333
01 апр. Cavab ləğv edilib Apr 01 2009-04-01 08:41 '09 saat 08:41 'da 2009-04-01 08:41

Bunun əvəzinə bir parça göndərəcəyimi düşündüm:

UITextViewDelegate protokolu üçün dəstək elan etdiyinizə əmin olun.

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; return NO; } return YES; } 
border=0

Swift 4.0 yeniləmə:

 func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { if text == "\n" { textView.resignFirstResponder() return false } return true } 
471
21 мая '10 в 6:42 2010-05-21 06:42 cavab samvermette tərəfindən verilir 21 may, '10 at 6:42 2010-05-21 06:42

Bilirəm ki, bu artıq cavablandırılıb, amma mən yeni bir xətt üçün simli lətifəni istəmirəm, mən bunu edirəm.

 - (BOOL)textView:(UITextView *)txtView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if( [text rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location == NSNotFound ) { return YES; } [txtView resignFirstResponder]; return NO; } 

Swift 4.0 yeniləmə:

 func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { if (text as NSString).rangeOfCharacter(from: CharacterSet.newlines).location == NSNotFound { return true } txtView.resignFirstResponder() return false } 
71
30 июня '11 в 19:30 2011-06-30 19:30 Cavab 30 İyun, '11 'də saat 7.30 ' da veriləcək

Bilirəm ki, bu, bir çox dəfə cavablandırılıb, amma burada bu məsələdə iki sentim var.

Mən samvermetteribetoya cavabları həqiqətən faydalı tapdım , eləcə də ribetoya cavabdakı maxpower şərhini . Ancaq bu yanaşmalarla əlaqədar problemlər var. Problem, matte cavabda samvermette yazır və bu, istifadəçinin bir xətt aralığında bir şey əlavə etmək istəyirsə, klaviatura heç bir şey qoymadan yox olacaq deməkdir.

Beləliklə, mənim yanaşma yuxarıda göstərilən üç həllərin bir qarışığıdır və simli uzunluq 1 olduğunda daxil olunan simli yeni bir xətt olub olmadığını yoxlayır, belə ki istifadəçinin mətnin yerinə mətnə ​​daxil olduğunu yoxlayırıq.

İşdə budur:

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { NSRange resultRange = [text rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet] options:NSBackwardsSearch]; if ([text length] == 1  resultRange.location != NSNotFound) { [textView resignFirstResponder]; return NO; } return YES; } 
40
21 мая '14 в 12:29 2014-05-21 12:29 cavab 21 may 2014- cü il saat 12:29 tarixində josebama'ya verilir. 2014-05-21 12:29

Daha şəffaf bir şəkildə istifadəçi klaviatura çərçivəsindən kənarda bir yerə sildiğinde klaviaturanı silməkdir.

Birincisi, ViewController görünüşünü "UIControl" sinifinə UIBuilder-da Müəyyənləşdirmə Müfəttişində qoyun. Görünüşü ViewController üstbilgi faylına sürükleyin və onu Touch Up Inside kimi bir hadisə kimi birləşdirin, məsələn:

ViewController.h

 -(IBAction)dismissKeyboardOnTap:(id)sender; 

Əsas ViewController ViewController.m faylında:

 -(IBAction)dismissKeyboardOnTap:(id)sender { [[self view] endEditing:YES]; } 

Bənzər metodlardan istifadə edərək, ikiqat kran və ya uzun toxunuş tələb edə bilər. ViewController'ınızı bir UITextViewDelegate olaraq yapılandırmanız ve bir TextView'ı ViewController'a bağlamanız tələb oluna bilər. Bu metod həm UITextView, həm də UITextField üçün işləyir.

Mənbə: Big Nerd Ranch

EDIT: Mən də UIScrollView istifadə etdiyiniz təqdirdə, yuxarıda təsvir edilən üsul Interface Builder vasitəsilə asanlıqla işləməyəcəyini əlavə etmək istərdim. Bu halda UIGestureRecognizer istifadə edə bilərsiniz və [[özünü göstərmə] endEditing: YES] metodunu çağırın. Bir nümunə olacaq:

 -(void)ViewDidLoad{ .... UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]; [self.view addGestureRecognizer: tapRec]; .... } -(void)tap:(UITapGestureRecognizer *)tapRec{ [[self view] endEditing: YES]; } 

İstifadəçi klaviatura kənara çıxdıqda və giriş yerini basmazsa, klaviatura qaçırılacaq.

35
07 окт. TMilligan tərəfindən verilmiş cavab 07 oktyabr 2012-10-07 08:36 '12 saat 08:36 'da 2012-10-07 08:36

Bu metodu nəzarətçinizə əlavə edin.

Swift

 func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { if text == "\n" { textView.resignFirstResponder() return false } return true } 

Bu üsul da sizin üçün faydalı ola bilər:

  override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { if let touch = touches.anyObject() as? UITouch { if touch.phase == UITouchPhase.Began { textField?.resignFirstResponder() } } } 
31
24 февр. İyulun 24-də Aleksandr Volovun cavabını verdi. 2015-02-24 08:36 '15 at 8:36 pm 2015-02-24 08:36
 -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if([text isEqualToString:@"\n"]) [textView resignFirstResponder]; return YES; } yourtextView.delegate=self; 

Ayrıca bir UITextViewDelegate əlavə UITextViewDelegate

Protokolu təsdiqləməyi unutmayın.

Əgər əlavə etmədiyiniz if([text isEqualToString:@"\n"]) düzəliş edə bilmirsinizsə

25
05 июня '12 в 7:25 2012-06-05 07:25 Cavab Vineesh TP tərəfindən 05 İyun 2012 günü saat 07 : 25-da verilir. 2012-06-05 07:25

Uitextview ilə istifadə edərkən başqa bir həll var, siz "textViewouldBeginEditing" üçün InputAccessoryView kimi bir toolbar əlavə edə bilərsiniz və bu düyməni klaviatura aradan bırakabilirsiniz, bu üçün kodu aşağıdakılardır:

ViewDidLoad'da

 toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)]; //toolbar is uitoolbar object toolBar.barStyle = UIBarStyleBlackOpaque; UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(btnClickedDone:)]; [toolBar setItems:[NSArray arrayWithObject:btnDone]]; 

Textviewdelegate metodunda

 - (BOOL)textViewShouldBeginEditing:(UITextView *)textView { [textView setInputAccessoryView:toolBar]; return YES; } 

Toolbarda olan "Finish" düyməsində hərəkət aşağıdakıları edir:

 -(IBAction)btnClickedDone:(id)sender { [self.view endEditing:YES]; } 
14
23 сент. cavab 23 sentyabr g212gs verilir 2014-09-23 12:02 '14 'da 12:02 2014-09-23 12:02

Josebama'nın cavabını bu mövzuya aid ən tam və təmiz cavab tapdım.

Bunun üçün Swift 4 sözdizimidir:

 func textView(_ textView: UITextView, shouldChangeTextIn _: NSRange, replacementText text: String) -> Bool { let resultRange = text.rangeOfCharacter(from: CharacterSet.newlines, options: .backwards) if text.count == 1  resultRange != nil { textView.resignFirstResponder() // Do any additional stuff here return false } return true } 
7
11 авг. Cavab Puneet Kohli tərəfindən verilir 11 av. 2017-08-11 13:17 '17 at 1:17 pm 2017-08-11 13:17

Klaviaturanı rədd etmək üçün paneli yerləşdirmək üçün naviqasiya nəzarət cihazını istifadə edin:

.h faylında:

 UIBarButtonItem* dismissKeyboardButton; 

.m faylında:

 - (void)viewDidLoad { dismissKeyboardButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissKeyboard)]; } -(void)textViewDidBeginEditing:(UITextView *)textView { self.navigationItem.rightBarButtonItem = dismissKeyboardButton; } -(void)textFieldDidBeginEditing:(UITextField *)textField { self.navigationItem.rightBarButtonItem = dismissKeyboardButton; } -(void)dismissKeyboard { [self.textField resignFirstResponder]; [self.textView resignFirstResponder]; //or replace this with your regular right button self.navigationItem.rightBarButtonItem = nil; } 
5
15 нояб. Alex Stone tərəfindən verilmiş cavab Noyabr 15 2011-11-15 03:11 '11 'də 3:11' də 2011-11-15 03:11

DidLoad'u görmək üçün bir müşahidəçi əlavə edin

 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(textViewKeyPressed:) name: UITextViewTextDidChangeNotification object: nil]; 

və sonra seçiciyi "\ n" yoxlamaq üçün istifadə edin.

 -(void) textViewKeyPressed: (NSNotification*) notification { if ([[[notification object] text] hasSuffix:@"\n"]) { [[notification object] resignFirstResponder]; } } 

Bu "\ n" istifadə edir və geri dönüş düyməsini xüsusi olaraq yox edir, amma hər şeyin məqsədi olduğunu düşünürəm.

ƏLAVƏ OLUNUB

Aşağıdakı cavabı [NSCharacterSet newlineCharacterSet] istifadə edərək yerinə \n

5
07 сент. Cavab ToddB 07 Sep verildi. 2012-09-07 23:58 '12 at 23:58 2012-09-07 23:58

Yalnız bu problemi başqa bir şəkildə həll edin.

  • Arxa planda yerləşdiriləcək bir düyməni yaradın.
  • Öznitelik müfettişinde, düğme türünü kullanıcıya dəyişdirin və düyməni şəffaf olun.
  • Bütün görünüşü bağlamaq üçün düyməni genişləndirin və düymənin digər obyektin arxasında olduğundan əmin olun. Bunu etmək üçün asan bir yoldur görünüşün üstündəki bir düyməni sürükləməkdir.
  • viewController.h faylına sürükləyin və buraxın və bir hərəkət yaradın (hadisə göndərildi: daxilində vurun), məsələn:

     (IBAction)ExitKeyboard:(id)sender; 
  • ViewController.m olmalıdır:

     (IBAction)ExitKeyboard:(id)sender { [self.view endEditing:TRUE]; } 
  • Proqramı başladın və "TextView" düyməsinə basarkən klaviatura yox olur.
5
27 февр. Cavab 27 fevralda Uvichy tərəfindən verilir . 2014-02-27 13:06 '14 at 13:06 2014-02-27 13:06

Matte samvermette comment kimi, "\ n" tapmaq ideyasını sevmirəm. Açar "qayıt" UITextView hər hansı bir səbəbdən mövcuddur, yəni növbəti xəttə gedir.

Ən yaxşı həlli, mənim fikrimcə, iPhone mesajlarının tətbiqini təqlid etməkdir. Klaviaturada bir toolbar (və düyməni) əlavə etməkdir.

Aşağıdakı blog yazısından kodu aldım:

http://www.iosdevnotes.com/2011/02/iphone-keyboard-toolbar/

Adımlar:

Toolbarını XIB faylına əlavə edin - hündürlüyü 460-a təyin edin

Toolbar elementini əlavə et (əgər artıq əlavə edilməyibsə). Sağa uyğunlaşmaq lazımdırsa, XIB üçün çevik bir panel elementi əlavə edin və alət panelində element elementini hərəkət etdirin

Düyməyinizin elementi bir istifadəyə bərpa etdiyi bir fəaliyyət yaradın -FirstResponder aşağıdakı kimi:

 - (IBAction)hideKeyboard:(id)sender { [yourUITextView resignFirstResponder]; } 

- Sonra:

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; } - (void)keyboardWillShow:(NSNotification *)notification { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; CGRect frame = self.keyboardToolbar.frame; frame.origin.y = self.view.frame.size.height - 260.0; self.keyboardToolbar.frame = frame; [UIView commitAnimations]; } - (void)keyboardWillHide:(NSNotification *)notification { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; CGRect frame = self.keyboardToolbar.frame; frame.origin.y = self.view.frame.size.height; self.keyboardToolbar.frame = frame; [UIView commitAnimations]; } 
5
21 марта '12 в 3:16 2012-03-21 03:16 cavab 21 mart 2012-ci il tarixində saat 12: 00-da veriləcək

Swift kodu

UITextViewDelegate öz sinifində tətbiq / Bunu bax:

 class MyClass: UITextViewDelegate { ... 

textView öğesini özünə təyin et

 myTextView.delegate = self 

Və sonra aşağıdakıları edin:

  func textViewDidChange(_ textView: UITextView) { if textView.text.characters.count >= 1 { if let lastChar = textView.text.characters.last { if(lastChar == "\n"){ textView.text = textView.text.substring(to: textView.text.index(before: textView.text.endIndex)) textView.resignFirstResponder() } } } } 

CHANGE Mən kodunu yeniləmişdim, çünki masa üstü üçün mətn qutusuna istifadəçinin girişini dəyişdirmək və hack kodunun tamamlanmasından sonra vəziyyəti bərpa etmək tövsiyə olunmur.

4
06 нояб. Cavab Frithjof Schaefer tərəfindən verildi 06 Noyabr. 2014-11-06 22:32 '14 at 10:32 pm 2014-11-06 22:32

Aşağıdakıları cəhd edin:

  - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ if ([text isEqualToString:@"\n"]) { [self.view endEditing:YES]; } return YES; } 
4
06 дек. Cavab Nabil el 06 dekabrda verilir. 2013-12-06 13:57 '13 at 13:57 2013-12-06 13:57

sürətli

 func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { if text == "\n" { textView.resignFirstResponder() } return true } 

2019

23 февр. Eduardo Oliveros Acosta tərəfindən verilmiş cavabı 23 fevral. 2016-02-23 02:40 '16 saat 02:40 'da 2016-02-23 02:40' də

// Bunu istifadə edə bilərsiniz ...

Addım 1. İlk addım UITextViewDelegate protokolu üçün dəstək elan etdiyinizdən əmin UITextViewDelegate . Bu başlıq faylında, məsələn, burada başlıqla edilir

EditorController.h:

 @interface EditorController : UIViewController { UITextView *messageTextView; } @property (nonatomic, retain) UITextView *messageTextView; @end 

Addım 2. Sonra nəzarətçini UITextViews-a nümayəndə kimi qeydiyyatdan keçirməlisiniz. Yuxarıda göstərilən nümunədən davamlı olaraq, burada UITextView ilə bir nümayəndə olaraq necə EditorController ...

 - (id) init { if (self = [super init]) { // define the area and location for the UITextView CGRect tfFrame = CGRectMake(10, 10, 300, 100); messageTextView = [[UITextView alloc] initWithFrame:tfFrame]; // make sure that it is editable messageTextView.editable = YES; // add the controller as the delegate messageTextView.delegate = self; } 

Addım 3. İndi shouldCahngeTextInRange son hissəsi mesaja cavab olaraq hərəkət etməlidir: shouldCahngeTextInRange aşağıdakı kimi olmalıdır:

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { // Any new character added is passed in as the "text" parameter if ([text isEqualToString:@"\n"]) { // Be sure to test for equality using the "isEqualToString" message [textView resignFirstResponder]; // Return FALSE so that the final '\n' character doesn't get added return FALSE; } // For any other character return TRUE so that the text gets added to the view return TRUE; } 
4
19 янв. Abhishek Pathak tərəfindən 19 yanvarda cavab verildi 2015-01-19 14:40 '15 saat 14:40 'da 2015-01-19 14:40

Tez cavab:

 override func viewDidLoad() { super.viewDidLoad() let tapGestureReconizer = UITapGestureRecognizer(target: self, action: "tap:") view.addGestureRecognizer(tapGestureReconizer) } func tap(sender: UITapGestureRecognizer) { view.endEditing(true) } 
3
15 июня '15 в 5:26 2015-06-15 05:26 Cavab Glauco Neves tərəfindən 15 İyun 15: 15-də 5:26 AM 2015-06-15 05:26

Tamam. Hər kəs hiylələrlə cavab verdi, amma buna nail olmaq üçün doğru yol olduğunu düşünürəm

Aşağıdakı hərəkətləri Interface Builder Builder'da Exit exit hadisəsinə qoşun ( TextField elementinə sağ tıklayın və << → → sonrakı üsula sonuna cntrl-sürükləyin.

 -(IBAction)hideTheKeyboard:(id)sender { [self.view endEditing:TRUE]; } 
3
31 янв. cavab 31 yanvarda veriləcək 2012-01-31 13:53 '12 at 13:53 2012-01-31 13:53

Görünüş sahəsinə də toxunaraq klavyəni gizləyə bilərsiniz:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch * touch = [touches anyObject]; if(touch.phase == UITouchPhaseBegan) { [txtDetail resignFirstResponder]; } } 
3
24 февр. Cavab 24 fevralda Hitesh Vaghela tərəfindən verilir. 2014-02-24 13:24 '14 at 13:24 pm 2014-02-24 13:24

Cavabın dəyişdirilməsi üçün bu kodu istifadə etdim.

  - (BOOL)textView:(UITextView*) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString*) text { if ([text isEqualToString:@"\n"]) { //[textView resignFirstResponder]; //return YES; NSInteger nextTag = textView.tag + 1; // Try to find next responder UIResponder* nextResponder = [self.view viewWithTag:nextTag]; if (nextResponder) { // Found next responder, so set it. [nextResponder becomeFirstResponder]; } else { // Not found, so remove keyboard. [textView resignFirstResponder]; } return NO; return NO; } return YES; } 
3
23 сент. Cavab Avijit Nagare 23 sep tərəfindən verilir . 2015-09-23 14:23 '15 at 14:23 2015-09-23 14:23
 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if (range.length==0) { if ([text isEqualToString:@"\n"]) { [txtView resignFirstResponder]; if(textView.returnKeyType== UIReturnKeyGo){ [self PreviewLatter]; return NO; } return NO; } } return YES; } 
1
27 авг. Cavab Rinju Jain 27 avqustda verilir . 2014-08-27 09:37 '14 saat 09:37 AM 2014-08-27 09:37
 + (void)addDoneButtonToControl:(id)txtFieldOrTextView { if([txtFieldOrTextView isKindOfClass:[UITextField class]]) { txtFieldOrTextView = (UITextField *)txtFieldOrTextView; } else if([txtFieldOrTextView isKindOfClass:[UITextView class]]) { txtFieldOrTextView = (UITextView *)txtFieldOrTextView; } UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, [Global returnDeviceWidth], 50)]; numberToolbar.barStyle = UIBarStyleDefault; UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_return"] style:UIBarButtonItemStyleBordered target:txtFieldOrTextView action:@selector(resignFirstResponder)]; numberToolbar.items = [NSArray arrayWithObjects:btnDone,nil]; [numberToolbar sizeToFit]; if([txtFieldOrTextView isKindOfClass:[UITextField class]]) { ((UITextField *)txtFieldOrTextView).inputAccessoryView = numberToolbar; } else if([txtFieldOrTextView isKindOfClass:[UITextView class]]) { ((UITextView *)txtFieldOrTextView).inputAccessoryView = numberToolbar; } } 
1
10 марта '15 в 11:01 2015-03-10 11:01 Cavab Venu Gopal Tewari tərəfindən 10 Mart 2015, saat 11:01 'də verilir

Sual, bunu qaytarma əleyhinə olaraq necə edəcəyini soruşur, amma hesab edirəm ki, UITextView istifadə edərkən sadəcə klaviaturadan keçmək niyyətində olan birinə kömək edə bilər:

 @IBOutlet weak var textView: UITextView! private func addToolBarForTextView() { let textViewToolbar: UIToolbar = UIToolbar() textViewToolbar = UIBarStyle.Default textViewToolbar = [ UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Done, target: self, action: #selector(self.cancelInput)), UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil), UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: self, action: #selector(self.doneInput)) ] textViewToolbar() self.textView.inputAccessoryView = textViewToolbar //do it for every relevant textView if there are more than one } func doneInput() { self.textView.resignFirstResponder() } func cancelInput() { self.textView.text = "" self.textView.resignFirstResponder() } 

AddToolBarForTextView () viewDidLoad və ya digər bir ömür yolu metoduna zəng edin.

Mənim üçün mükəmməl bir həll oldu.

Salamlar

Murat

1
16 дек. Murat Yaşar tərəfindən 16 dekabrda cevap verildi. 2016-12-16 14:04 '16 saat 02:04 'da 2016-12-16 14:04
 -(BOOL)textFieldShouldReturn:(UITextField *)textField; // called from textfield (keyboard) -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; // good tester function - thanks 
0
30 дек. Josh tərəfindən verilmiş cavab 30 dekabr. 2010-12-30 19:53 '11 at 19:53 2010-12-30 19:53

TextView üçün nümayəndə təyin etməyi unutmayın - əks halda istefa verməyən respondent işləməyəcək.

0
20 мая '14 в 9:53 2014-05-20 09:53 Cavab Ron Holmes tərəfindən 20 May '14, 9:53 2014-05-20 09:53 'də verilir

Mən bu sualın dəqiq cavabı olmadığını bilirəm, amma internetdən cavab axtarandan sonra bu mövzu tapdım. Başqaları bu hissi paylaşırlar.

Bu, UITapGestureRecognizer mənim dağılımımdır, mən hesab edirəm ki, etibarlı və istifadə üçün asandır - yalnız TextView nümayəndəsini ViewControllerə yerləşdirin.

ViewDidLoad yerine, TextView düzenleme üçün etkinleştiğinde UITapGestureRecognizer əlavə et:

 -(void)textViewDidBeginEditing:(UITextView *)textView{ _tapRec = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)]; [self.view addGestureRecognizer: _tapRec]; NSLog(@"TextView Did begin"); } 

TextView-dən kənara çıxdığımda, görünüş düzəliş rejimini dayandırır və UITapGestureRecognizer özünü silmək üçün görünüşdə digər nəzarət ilə əlaqə saxlamağa davam edə bilərəm.

 -(void)tap:(UITapGestureRecognizer *)tapRec{ [[self view] endEditing: YES]; [self.view removeGestureRecognizer:tapRec]; NSLog(@"Tap recognized, tapRec getting removed"); } 

Bu kömək edir. Göründüyü kimi aydın görünür, amma internetdə heç bir yerdə bu həllini görməmişəm - mən yanlış bir şey edirəm?

0
14 окт. Cavab BGC 14 oktyabr tərəfindən verilir 2013-10-14 00:12 '13 'da 0:12' da 2013-10-14 00:12

Bunu sınayın.

 NSInteger lengthOfText = [[textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]; 
0
31 марта '15 в 12:51 2015-03-31 12:51 Cavab Hiren Panchal tərəfindən 31 Mart 'da saat 12:51' də veriləcək. 2015-03-31 12:51

Xcode 6.4 üçün, Swift 1.2.

  override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { super.touchesBegan(touches, withEvent: event) if let touch = touches.first as? UITouch { self.meaningTextview.resignFirstResponder() } } 
0
09 июля '15 в 12:12 2015-07-09 12:12 Cavab 09 İyul 2013 tarixində saat 12:12 'də MB_iOSDeveloper verilir

funksiyası hideQueboard.

 - (void)HideQueyboard { [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil]; } 
-1
02 нояб. cavab Alan10977 02 noyabrda verilir. 2014-11-02 00:13 '14 'də 0:13 2014-11-02 00:13
  • 1
  • 2

etiketləri ilə bağlı digər suallar və ya bir sual