2012-04-24 12 views
6

Mam UIWebView prezentujący stronę zawierającą pola wejściowe().Zapobieganie przewijaniu UIWebView po wyświetleniu klawiatury

Gdy użytkownik dotknie pola, aby wprowadzić dane, UIWebView przewija się w górę i w lewo, aby pole pozostało widoczne dla użytkownika. No dobrze.

Nie mam nic przeciwko przewinięciu w górę (ponieważ wszystko pod moją postacią jest ukryte za klawiaturą), ale chciałbym zapobiec przewijaniu widoku w lewo.

Czy istnieje sposób (nagłówki na stronie html lub kod iOS), aby zapobiec temu zjawisku?

Dzięki

Odpowiedz

0

Najpierw trzeba będzie przechwytywać ekran z klawiatury przy użyciu UIKeyboardWillShowNotification.

Następnie ogranicz szerokość contentSize UIScrollView (z interfejsu UIWebview) do szerokości ekranu, dzięki czemu ekran nie będzie przewijany w poziomie.

+3

nie działa na mnie – Remover

+0

Mam do czynienia z tym samym problemem, gdy użytkownik wybierze pole wprowadzania, widok internetowy przewija się w lewo i mam stronicowanie, więc nie mogę ograniczyć szerokości do rozmiaru ekranu. Masz pomysł, jak mogę zapobiec przewijaniu w lewo? – coder

+0

Czy próbowałeś wyłączyć przewijanie ('aScrollView.scrollEnabled = NO'), gdy klawiatura jest włączona. ? – Roshit

1

nie wiem w jaki sposób, aby zapobiec przewijania całkowicie, ale jeśli nie przeszkadza trochę jitter, można dodać ten program obsługi do pola wejściowego:

onfocus="setTimeout('window.scroll(0,0)',100)" 
0

nie piękne, ale skuteczny:

Jeśli nie chcesz Webview aby przewinąć w ogóle, można wdrożyć UIWebView za UIScrollViewDelegate i ustawić contentOffset 0 na scrollViewDidScroll

aWebView.scrollView.delegate = self 

func scrollViewDidScroll(scrollView: UIScrollView) { 
    scrollView.contentOffset = CGPointMake(0, 0) 
} 
+0

W twoim rozwiązaniu 'webView.scrollView.isScrollEnabled = false' wystarczyłoby, aby uniknąć używania delegata do tego. Chociaż nie jestem pewien, czy ta odpowiedź w pełni pokrywa pytanie. – Ben

Powiązane problemy