2009-05-20 13 views
6

Questa è probabilmente una cosa facile da fare, ma non riesco a capirlo - come faccio a terminare la modifica nella visualizzazione testo? come posso far scomparire la tastiera? o devo fare clic all'esterno per farlo andare via?iPhone - Problema con UITextView

risposta

10

In primo luogo, una (abbastanza onesta) domanda abbastanza semplice come questa mi fa chiedere se hai provato a leggere la documentazione, oa cercare su Internet.

La ricerca di "Documentazione Apple UITextView" fornisce this link nella documentazione della classe. Allo stesso modo, here is la documentazione per UITextViewDelegate.

La ricerca di "UITextView simple example" fornisce questo useful example.

Ricerca "UITextView rifiuta tastiera", il primo colpo sembra answer your question exactly. (Anche se lui abbandona la tastiera su un tasto di ritorno, che potrebbe non essere quello che vuoi.) (Modifica - sembra dal tuo secondo commento è esattamente quello che vuoi.)

P.S. Le persone sopra sono corrette, se un po 'concise (comprensibilmente). È necessario implementare un UITextViewDelegate. In quel delegato, se si desidera nascondere la tastiera su una chiave di ritorno, implementare shouldChangeTextInRange, cercare @ "\ n" e dimettersi dal primo risponditore se si ottiene. In alternativa, aggiungi un pulsante "Modifica completata" all'interfaccia utente e abbandona il primo risponditore se l'utente lo preme.

+0

sì, google.com -> http://iphonedevelopertips.com/cocoa/how-to- dismiss-the-keyboard-when-using-a-uitextview.html – oberbaum

+3

SO è pieno di "domande abbastanza semplici [s]" e grazie a Dio! –

2

molto facile:

[myTextField resignFirstResponder]; 

farà il trucco.

+3

TextView, non textfield – Unreality

0
[yourTextField resignFirstResponder]; 

farà scomparire la tastiera e terminerà la modifica.

+3

TextView, non textfield – Unreality

2

Un modo per terminare la modifica, toccando fuori da textView, non è del tutto banale. La selezione di altre viste di testo o campi di testo o l'attivazione di un controllo di navigazione attiverà ...

- (void)textViewDidEndEditing:(UITextView *)textView 

... su qualunque oggetto che avete designato come delegato del textView. Puoi attivare tu stesso chiamando ...

- (BOOL)endEditing:(BOOL)force 

... sulla vista che contiene il campo di testo.

Supponiamo di avere un UITextView all'interno di UITableViewCell (all'interno di un UITable). Voglio abilitare la modifica per terminare toccando la tabella. Potrei fare questo:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapTable)]; 
    [[self tableView] addGestureRecognizer:tapRecognizer]; 
    [tapRecognizer release]; 
} 

- (void)didTapTable 
{ 
    [[self tableView] endEditing:YES]; 
} 

Ora ogni volta che tocco il mio tavolo, termino il montaggio. E, come altri hanno detto, in textViewDidEndEditing dovrei assicurarsi di chiamare [textView resignFirstResponder];

+0

Penso che endEditing chiamerà resignFirstResponder sul textView. La cosa bella di EndEditing è che non devi sapere quale textView è attualmente in corso di modifica. endEditing lo troverà per te e chiuderà la tastiera. Dai documenti "Questo metodo esamina la vista corrente e la sua gerarchia di sottoriport per il campo di testo che è attualmente il primo risponditore.Se ne trova uno, chiede che il campo di testo si dimettiti come primo risponditore. Se il parametro force è impostato su YES, il campo di testo non viene mai nemmeno richiesto; è costretto a dimettersi. " – JScarry

Problemi correlati