2011-01-14 9 views
8

Mam stronę, która ładuje się do UIWebView (który zajmuje 100% ekranu) na iPadzie.Klawiatura w UIWebView pokazuje, a następnie ukrywa się na ognisku wejściowym

Po dotknięciu pola tekstowego, strona umieszcza pole tekstowe we właściwym miejscu, a klawiatura zaczyna pojawiać się na ekranie, ale potem się odwraca i cofa, a rozmycie wywoływane jest w polu wejściowym.

Kiedy próbuję tej samej strony w mobilnym Safari, klawiatura może zostać pomyślnie wdrożona.

Nie wiem, jakie są zasady dotyczące prawidłowego wyświetlania klawiatury i pozostawania w górze = i dlaczego jest ona inna w przypadku interfejsu uiwebview niż w przypadku safari.

Wszystkie moje badania na ten temat nie przyniosły żadnych odpowiedzi.

+0

Czy zmieniasz rozmiar widoku podczas wyświetlania klawiatury? Jeśli nie, może to być przyczyną nieoczekiwanego zachowania. – Paul

+0

Jak poprawnie dopasować widok? Mam już programy do obsługi klawiatury. Po prostu nie wiem, jakie warunki wymaga klawiatura, aby zostać ... – Jake

+3

Wygląda na to, że zmieniasz/wyrzekłeś się pierwszego przedstawiciela w jednej z metod delegowania webView. Czy możesz pokazać kod dla tych delegatów? –

Odpowiedz

1

bez żadnego kodu zamieszczonych w swoim pytaniu, ja spekulują, że klawiatura będzie z powrotem w dół, występuje tylko wtedy, gdy pole tekstowe HTML dotknięciu przed ostatecznym wezwaniem do UIWebViewDelegate webViewDidFinishLoad:

Aby to sprawdzić, należy najpierw ustawić UIWebView.delegate do UIViewController, która jest właścicielem (lub jakikolwiek obiekt posiada UIWebView). Następnie zaimplementuj te metody przekazywania.

- (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); 
} 

Uruchom aplikację i zanotuj ile razy webViewDidFinishLoad: nazywa. (Jeśli twoja strona zawiera wiele ramek lub zawiera takie elementy, jak Google Analytics, będzie ona wywoływana wiele razy.)

Spróbuj dotknąć pola tekstowego HTML po wywołaniu `webViewDidFinishLoad: 'po raz ostatni. Czy klawiatura pozostaje w górze? (Tak sądzę).

Jeśli to zadziała, następnie spróbuj dotknąć przed ostatecznym wywołaniem `webViewDidFinishLoad: '. Czy klawiatura jest animowana, ale z powrotem w dół?

Powiązane problemy