Domanda

Ho una tabella e in una delle celle tengo un UITextView.Quando l'utente lo tocca, viene visualizzata la tastiera.Stavo provando vari modi per sbarazzarmene.Il mio primo approccio è stato quello di rilevare un tocco sulla cella della tabella di UITextView, ma poiché la visualizzazione del testo ne occupa la maggior parte, non è adatta.Poi ho provato ad aggiungere un pulsante alla barra degli strumenti e ogni volta che l'utente lo preme, la tastiera scompare con resignFirstResponder, ma non funzionerà.Sembra che funzioni solo quando sono nella stessa visualizzazione di UITextView resignFirstResponder.Allora come posso sbarazzarmi della tastiera da una vista diversa?

Grazie.

È stato utile?

Soluzione

Il metodo di seguito utilizza il tasto INVIO per chiudere la tastiera UITextView.

Nel vostro controller, impostare delegato del UITextView di auto in questo modo:

myTextView.delegate=self;

Quindi aggiungere questo metodo:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
 replacementText:(NSString *)text
{
 // Any new character added is passed in as the "text" parameter
 if ([text isEqualToString:@"\n"]) {
  // Be sure to test for equality using the "isEqualToString" message
  [textView resignFirstResponder];

  // Return FALSE so that the final '\n' character doesn't get added
  return FALSE;
 }
 // For any other character return TRUE so that the text gets added to the view
 return TRUE;
}

Questo dovrebbe funzionare se non si sta usando il tasto Invio come tasto vero ritorno (ad esempio l'aggiunta di nuova riga).

Altri suggerimenti

Cosa vuol dire "non funzionerà". Se è il vostro txtView UITe4xtView, vuoi dire che associa il pulsante con un'azione che ha [txtView resignFirstResponder] non funzionerà? Ho usato questo codice prima e funziona per me

Senza conoscere la dimensione dei controlli, né lo scopo, è un po' difficile fornire una raccomandazione valida.Tuttavia, se stai cercando una visualizzazione testo di sola lettura, perché non prendere in considerazione una UILabel?Se conterrà una grande quantità di testo di sola lettura e hai bisogno di una formattazione avanzata, considera un UIWebView con la tua formattazione.

Naturalmente questa risposta potrebbe essere del tutto inappropriata.Puoi chiarire le tue intenzioni, magari mostrare uno screenshot dell'app in corso (non sfruttata, ovviamente)?

provare a deselezionare l'opzione 'modificabile' nel testo Visualizza finestra Attributi in Interface Builder.

questo si ferma la tastiera dal rivelare se l'utente fa clic sul tuo TextView

ho utilizzato per questo tipo di problema, il metodo folowing

- (BOOL)textFieldShouldReturn: tf_some_text_field {

[tf_some_text_field resignFirstResponder];
[tf_another_text_field_in_the_same_view resignFirstResponder];

return YES;
}

Speranza che aiuta ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top