2012-04-06 2 views
7

Non riesco proprio a far uscire il pulsante "Fine".Funzione tasto fatto Xcode tastiera iOS X

Ho usato questo nel mio file controller.h

- (IBAction)textFieldDoneEditing:(id)sender; 

e questo per il mio file controller.m

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

e sto coinvolto in cablaggio della parte .xib.

+1

Penso che devi aver dimenticato di impostare 'delegato' per il tuo campo di testo. – Kjuly

+0

post simile su Stackoverflow, seguilo. http://stackoverflow.com/questions/2828826/iphone-keyboard-done-button-and-resignfirstresponder – AsifHabib

risposta

23

Fare il controllore delegato del UITextField/UITextView in IB o dal codice come textField.delegate = self;

Editted: Per questo è necessario dichiarare il controllore delegato del UITextFieldDelegate/UITextViewDelegate come

@interface Controller : <UITextFieldDelegate> { ... 

, poi override del metodo:

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

per UITextField e

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

per UITextView

+1

controller.h inoltre deve dichiarare che adotta il protocollo UITextFieldDelegate. – Marco

+0

@Marco Grazie. Modificato la risposta. – skonb

+1

Finalmente un esempio funzionante. Grazie –

1

Nella tua .xib, fate clic destro sul vostro visualizzazione del testo, trascinare per "Manuale di file", e cliccare su "delegato". Dovrebbe funzionare ora?

Modifica: Whoops, scusa, sono un idiota, faccio quello che dice l'altro. Se non sai come impostare il delegato nel codice, puoi farlo a modo mio in IB.

+0

ho impostato il delegato nel codice, ma ho anche dovuto collegare i campi di testo in IB come suggerito, quindi grazie per aver postato questa risposta. –

0

Permettetemi di fare il mio primo contributo: Se si dispone di più campi di testo, raggrupparli in un @property (forte, nonatomic)

* .h

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

* .m

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

}