2011-08-24 10 views
5

Domyślnie, jeśli pole tekstowe jest potomkiem przewijania i jest dotykane, gdy znajduje się częściowo poza ramką nadrzędnego przewijania, widok przewija się nieco w górę. Na przykład, powiedzmy, że mamy widok przewijania z wysokością ramki 200, ale wysokość contentSize równą 260, a my umieścimy pole tekstowe na pozycji 220. Teraz przewijam w górę i umieszczam pole tekstowe w połowie ramki przewijania i pozwalam druga połowa zostaje odcięta. Jeśli dotknę tego pola tekstowego, zauważysz, że widok przewijania automatycznie przewija się o kilka pikseli, zanim pojawi się klawiatura. Jest to problematyczne, ponieważ mam już własny kod przewijania, więc gdy to nastąpi, kończy się przewijanie dwa razy tak daleko, jak tego chcę. Czy istnieje sposób na usunięcie tego domyślnego zachowania?Jak zatrzymać automatyczne przewijanie UIScrollView po dotknięciu UITextField z ramki przewijania?

Odpowiedz

0

Podobne pytanie już zostało tutaj odpowiedział: https://stackoverflow.com/a/5673026/550177

Można także spróbować zresetować przez Scrollview za contentOffset gdy pole tekstowe staje się pierwszą odpowiedź. Implemement delegat pola tekstowego w ten sposób:

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [self.scrollView setContentOffset:_scrollView.contentOffset animated:NO]; 
} 

Ten kod usuwa tę automatyczną animację po zaznaczeniu pola tekstowego. Testowałem z iOS 6.1 w symulatorze.

Powiązane problemy