2011-01-15 9 views

risposta

33

Non esiste il metodo -textViewShouldReturn: nel protocollo UITextViewDelegate. Se si desidera la chiave return (done) per chiudere la tastiera, è preferibile utilizzare invece un UITextField, UITextView è progettato per la modifica di più righe di testo (quindi è necessario un modo per inserire un'interruzione di riga).

Se davvero si vuole nascondere la tastiera quando colpisce il tasto invio in un UITextView, probabilmente si potrebbe fare qualcosa di simile:

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

Grazie! La ragione per cui avevo bisogno di usare TextView è perché l'app su cui sto lavorando è un'API di Twitter. E se l'utente volesse leggere attraverso il tweet prima di postarlo, allora sarebbe un po 'più confuso per l'utente. – Tapy

-3

E 'semplice come:

textField.returnKeyType=UIReturnKeyDone; 

aggiungere questo al delegato del campo di testo per rimuovere la tastiera quando viene premuto:

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

Sì, ma questo non chiudere la tastiera. – Tapy

+0

Mi dispiace per quello. Aggiunto alla mia risposta. – grahamparks

+10

Penso che la domanda fosse riferita a UITextView non UITextField –

-5

Oltre a impostare:

textField.returnKeyType = UIReturnKeyDone; 

è necessario impostare il delegato del campo di testo per la classe e fare qualcosa di simile a questo:

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

    return YES; 
} 

Questa impostazione returnKeyType può essere eseguita anche da Interface Builder - se l'interfaccia utente è definita in un XIB. D'altra parte il -resignFirstResponder farà in modo che la tastiera scompaia. Dovrebbe essere fatto nel metodo -textFieldShouldReturn: delegate, poiché viene invocato quando l'utente tocca il pulsante Fine.

Spero che questo aiuti.

+1

Chiede UITextView non UITextField. – Domness

+1

Anche non rispondendo alla domanda .. la domanda riguarda UITextView. –

Problemi correlati