2012-04-06 4 views
7

Po prostu nie mogę wykonać przycisku "Gotowe", aby wyjść z klawiatury.Funkcja klawisza klawiatury iOS Xcode done button

użyłem w moim controller.h pliku

- (IBAction)textFieldDoneEditing:(id)sender; 

i to dla mojego pliku controller.m

- (IBAction)textFieldDoneEditing:(id)sender { 
    [sender resignFirstResponer]; 
} 

i jestem zamieszany w okablowaniu część .xib.

+1

Myślę, że zapomniałeś ustawić 'delegate' dla swojego pola tekstowego. – Kjuly

+0

podobny post na Stackoverflow, wykonaj go. http://stackoverflow.com/questions/2828826/iphone-keyboard-done-button-and-resignfirstresponder – AsifHabib

Odpowiedz

23

Bądź sterowniku, delegata na UITextField/UITextView w IB lub z kodem jak textField.delegate = self;

editted: do tego trzeba zadeklarować sterowniku, delegata UITextFieldDelegate/UITextViewDelegate jak

@interface Controller : <UITextFieldDelegate> { ... 

, a następnie zastąp tę metodę:

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

dla UITextField i

-(BOOL)textViewShouldEndEditing:(UITextView *)textView{ 
    [textView resignFirstResponder]; 
    return YES; 
} 

dla UITextView

+1

controller.h również musi zadeklarować, że przyjmuje protokół UITextFieldDelegate. – Marco

+0

@Marco Dzięki. Edytowano odpowiedź. – skonb

+1

Wreszcie działający przykład.Dziękuję –

1

W swojej .xib, kliknij prawym przyciskiem myszy na widoku tekstu, przeciągnij go do „właściciel pliku za” i kliknij przycisk „delegata”. Czy teraz powinieneś pracować?

Edytuj: Ups, przepraszam Jestem idiotą, rób to, co mówi inny facet. Jeśli nie wiesz, jak ustawić delegata w kodzie, możesz zrobić to po swojemu w IB.

+0

Ustawiłem delegata w kodzie, ale TAKŻE musiałem połączyć pola tekstowe w IB, jak sugerujesz, więc dziękuję za opublikowanie tej odpowiedzi. –

0

Pozwól mi zrobić mój pierwszy wkład: Jeśli masz kilka pól tekstowych, grupa je w @property (silny, nonatomic)

* .h

@property (strong, nonatomic) IBOutletCollection(UITextField) NSArray *collectingData; 

* .m

-(BOOL)textFieldShouldReturn:(UITextField *)boxes 
    { 
     for (UITextField *boxes in collectingData) { 
     [boxes resignFirstResponder]; 
    } 
    return YES; 

}