2011-01-14 9 views
8

Ho una pagina che viene caricata in un UIWebView (che occupa il 100% dello schermo) su un iPad.in UIWebView mostra e si nasconde automaticamente sullo stato di input

Quando tocco un campo di testo, la pagina posiziona il campo di testo nel punto giusto e la tastiera inizia a salire, ma poi si gira e torna indietro e viene visualizzata la sfocatura sul campo di immissione.

Quando provo questa stessa pagina in Safari mobile, la tastiera è in grado di implementare correttamente.

Non riesco a capire quali sono le regole per la tastiera per mostrare correttamente e rimanere up = e perché questo è diverso per uiwebview rispetto al safari.

Tutte le mie ricerche sull'argomento non hanno dato risposte.

+0

Si sta gestendo il ridimensionamento della vista correttamente quando viene visualizzata la tastiera? In caso contrario, questa potrebbe essere una causa di comportamento imprevisto. – Paul

+0

come dimensionare correttamente la vista? Ho già gestori per gli eventi della tastiera. Solo che non so quali condizioni richiede la tastiera per stare su ... – Jake

+3

Sembra che tu stia cambiando/rinunciando al firstresponder in uno dei tuoi metodi di delega webView. Puoi per favore mostrare il codice per quei delegati? –

risposta

1

Senza avere alcun codice scritto nella sua interrogazione, sto ipotizzando che la tastiera ridiscendere si verifica solo quando il campo di testo HTML è toccato prima della chiamata finale per UIWebViewDelegate webViewDidFinishLoad:

Per verificare ciò, prima impostare il UIWebView.delegate al UIViewController che lo possiede (o qualunque oggetto detiene il UIWebView). Quindi implementare questi metodi delegati.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 

    return YES; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *urlString = webView.request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 
} 

eseguire la vostra applicazione e annotare il numero di volte che si chiama webViewDidFinishLoad:. (Se la tua pagina web contiene più frame o include cose come Google Analytics, verrà chiamata più volte.)

Prova a toccare il campo di testo HTML dopo "webViewDidFinishLoad:" viene chiamato per l'ora finale. La tastiera rimane alzata? (Lo penserei).

Se funziona, provare a toccare l'ultima chiamata a `webViewDidFinishLoad: '. La tastiera si anima ma poi si arresta?

Problemi correlati