2011-06-20 24 views
12

Szukam od około godziny teraz w Internecie i nie mogę znaleźć żadnego kodu, który mi w tym pomoże.UITextView zrezygnuj z pierwszej odpowiedzi na "Gotowe"

Mam UITextView, że muszę zrezygnować z pierwszego reagowania, gdy użytkownik naciśnie przycisk "Gotowe" na klawiaturze.

Widziałem kod pływający po internecie tak:

-(BOOL) textFieldShouldReturn:(UITextField *)textField { 
[textField resignFirstResponder]; 
return NO; 
} 

Ale to nie będzie działać na UITextView. Po prostu, Skąd mam wiedzieć, kiedy użytkownik naciśnie przycisk "done" na klawiaturze?

Odpowiedz

44

Wykonaj metodę delegata shouldChangeTextInRange:.

Użyj poniższej metody, a rozwiązanie działa tylko z @ "\ n" (znak nowego wiersza).

//In you *.h file make sure you add 
@interface v1ViewController : UIViewController <UITextViewDelegate> 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    myTextField.delegate = self; 
} 

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
      replacementText:(NSString *)text 
     { 

      if ([text isEqualToString:@"\n"]) { 

       [textView resignFirstResponder]; 
       // Return FALSE so that the final '\n' character doesn't get added 
       return NO; 
      } 
      // For any other character return TRUE so that the text gets added to the view 
      return YES; 
    } 
+0

Mam to ustawienie. jak mogę wykryć, kiedy jest wciśnięty. –

+0

ustaw delegat pola tekstowego jak 'myTextField.delegate = self;' i zwróć 'YES' w metodzie' textFieldShouldReturn'; – Jhaliya

+2

@Jhaliya proszę przeczytać OP, to tekst WIDOKI nie tekst FIELD –

-3

Można użyć metody delegata

- (void)textViewDidEndEditing:(UITextView *)textView { 
    [textView resignFirstResponder]; 
} 

trzeba ustawić kontroler jako delegat na TextView. Więcej metod można znaleźć tutaj: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html%23//apple_ref/doc/uid/TP40006897

+0

Nie działa, Nic innego się nie stało w mojej aplikacji. Mam skonfigurowanego mojego delegata i mam konfigurację klawiatury tak, jak tego chcę, ale kod ten nigdy nie zostanie wywołany. –

+2

'textViewDidEndEditing:' jest wywoływane po zakończeniu edycji, innymi słowy kiedy textView już zrezygnował z pierwszej odpowiedzi, więc '' textView resignFirstResponder] 'wewnątrz tego nie będzie miało żadnego efektu. – nacho4d

+0

Masz rację. Powinienem ponownie przeczytać dokumentację – Pierre

Powiązane problemy