Stiamo utilizzando PhoneGap per sviluppare la nostra applicazione per cellulare, e abbiamo preso in prestito il codice da qui per rimuovere il nero successivo/precedente/bar fatto da tastiera:PhoneGap: rimuovere completamente la barra nera dalla tastiera iPhone
https://stackoverflow.com/a/9276023/35364
Quello che fa il codice è che trova la barra nera, come oggetto UIView, e chiama "removeFromSuperview" su di esso.
Non abbiamo familiarità con l'SDK/API iOS. Quindi, mentre possiamo guardare il codice e avere un'idea di cosa sta facendo, non possiamo sapere se lo sta facendo correttamente, o come migliorarlo.
Il problema specifico stiamo correndo in:
Abbiamo un campo di testo per la scrittura di un messaggio, e stiamo controllando manualmente la collocazione di questo campo di essere esattamente sopra la tastiera, simile a quella nativa sms app. In altre parole, lo stiamo mettendo dove dovrebbe essere la barra nera.
Quando si mette a fuoco/digitare il campo del messaggio, il sistema spinge la vista verso l'alto. Sembra che questo sia un meccanismo per assicurarsi che il campo di testo non sia invisibile quando l'utente digita al suo interno.
Ciò accade anche se il campo di testo è visibile.
Ho notato che posizionando il campo di immissione proprio sopra la posizione in cui la barra nera sarebbe normalmente (come opposto al retro), la vista non scorre.
Quindi sembra che il sistema in qualche modo pensi che la barra nera sia ancora lì!
(Per ricontrollare: quando la barra nera non viene rimossa, e mettiamo il campo di testo proprio sopra di esso, possiamo mettere a fuoco e digitarci, e la vista non scorrerà).
Quindi la domanda è:
Perché il "sistema" push il contenuto quando si modifica un campo di testo che è giusto posto "dietro" in cui la barra nera dovrebbe essere? È perché la barra nera non è ancora completamente rimossa? Dobbiamo fare qualcosa per rimuovere "completamente" la barra nera? Dobbiamo forzare iOS a ricalcolare le dimensioni della tastiera? o cosa esattamente?
È questo meccanismo (che spinge verso l'alto la vista) implementato da UIWebView di iOS o da PhoneGap?
C'è qualche app per PhoneGap che ha risolto questo problema?
Grazie, questo suona come potrebbe funzionare. Una cosa però non sono sicuro di cosa debba essere "webb". Ho provato 'UIScrollView * webScroll = [self.webView.subviews lastObject];' ma non sembra funzionare. – hasen
ups sì, era la mia webView temporanea, un 'IBOutlet'. Ma dovrebbe funzionare come hai provato tu. Per favore 'NSLog (% @, self.webView.subviews)'. Forse hai più sottoview, ne ho avuto solo uno (la scrollView) –
Penso che anche "self.webView.scrollView' dovrebbe funzionare. – hasen