2011-08-26 9 views
10

Mam widok, który zawiera pola tekstowe od górnej części ekranu do dolnej części ekranu. Oczywiście, dolne pola tekstowe zostają zakryte przez klawiaturę, gdy się pojawiają, więc postanowiłem pozbyć się tego problemu.ScrollRectToVisible nie działa zgodnie z przeznaczeniem

zarejestrować powiadomień w metodzie viewDidLoad, wtedy gdy UIKeyboardDidShowNotification wysyłana jest ta metoda nazywa się:

- (void)keyboardWasShown:(NSNotification*)aNotification 
{ 
    NSDictionary* info = [aNotification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 

    [scrollView scrollRectToVisible:activeField.frame animated:YES]; 
} 

Problemem jest przewijany nic nie wychodzi w ogóle, nie mówiąc już przewijane na widoczne. Czego tu mi brakuje?

Wszystkie moje pola tekstowe są wewnątrz widoku przewijania, itp

Dzięki z góry.

+0

Ustaw rozmiar treści, upewniając się, że ani szerokość, ani wysokość nie są zerowe. Następnie dodaj lub odejmij od contentInform height, dopóki nie zadziała. scrollView.contentSize = CGSizeMake (kbSize.width, kbSize.height); scrollView.contentInset = UIEdgeInsetsMake (0, 0, kbSize.height - 250, 0); // (góra, lewo, dół, prawo) –

Odpowiedz

25

This to podobny wpis, w którym scrollRectToVisible: nie działa poprawnie, i istnieje rozwiązanie, upewniając się, że contentSize jest ustawiony prawidłowo. Mam nadzieję, że pomaga!

+0

Dlaczego scrollRectToVisible: nie działa? –

+0

@Yatheesha Ponieważ 'UIScrollView' będzie przewijać tylko tą metodą, jeśli różnica wielkości między jej rozmiarem a jej' contentSize' jest wystarczająca (tj. Jeśli 'contentSize' jest o 50 punktów dłuższa niż' [[rozmiar ramki UIScrollView]] , będziesz mógł przewinąć o 50 punktów, ale nie więcej. W tym przypadku chcemy przewinąć więcej, aby przesuwać tekst nad klawiaturą, więc sprawiliśmy, że 'UIScrollView' wierzy, że jest więcej do pokazania, co robimy przez Zwiększenie 'contentSize'. – dadude999

+1

Podczas gdy odpowiedź jest przekierowywana do innego linku, pomógł mi rozwiązać, że zapomniałem dodać dole do podglądu dodanego wewnątrz scrollview, contentSize szerokość była idealna, ale wysokość była 0! Dzięki :) – KiranJasvanee

1

Odznacz także pod górnymi słupkami ViewController'a:

Powiązane problemy