Mam UIScrollView
, który ma w sobie kilka dynamicznych widoków, z których każdy ma pole tekstowe. Kiedy zaczynam wpisywać w jednym z pól, chcę przewijać widok przewijania tak, aby pole znajdowało się na górze ekranu (widoczne nad klawiaturą). Działa świetnie; Oto kod:Przewijanie UIScrollView, aby wyświetlić najniższy z kilku pól tekstowych
(void)didStartTyping:(id)sender {
[scrollView setContentOffset:CGPointMake(0, subView.frame.origin.y) animated:YES];
scrollView.scrollEnabled = NO;
}
(void)didFinishTyping:(id)sender {
scrollView.scrollEnabled = YES;
}
Ale, gdy widok przewijania jest przewijane do samej góry i zacznę pisać w najniższym polu tekstowym widocznym, nie przewijać tyle daleko (krótka o około 40 px). Dziwne jest to, że działa, gdy przewijam w dół o jeden piksel od góry widoku przewijania, ale kiedy przewijam do góry, zachowuje się zupełnie inaczej.
trzeba rejestrować klatek scollview zarówno w scenariuszu i sprawdzić, co tam jest? To, o czym mogę myśleć, to jak podnieść zapotrzebowanie na offset dolny. – rishi
Cóż, to miałoby sens. Ale na razie brzydkie obejście polegało na zmianie rozmiaru subskrybentów, aby po przewinięciu widoku do góry nie było widać pola tekstowego widoku z dołu. Nie optymalne, ale działa na razie i jeśli wrócę do tego, dam ci znać, jak to działa. Dzięki Rishi. – Gazzini
Można ręcznie przewijać widok przewijania do żądanej pozycji - to znaczy, nie należy ustawiać ostrości pola tekstowego, ale przeciągnij widok przewijania tam, gdzie chcesz się znaleźć, jeśli klawiatura ma się pojawić? Czy możesz przeciągnąć go tam, gdzie chcesz? W większości przypadków, gdy rozmiar zawartości przewijania ściśle obejmuje jego treść, nie można naprawdę dostać ostatniego elementu na górę. Innym sposobem na powiedzenie tego jest, czy możesz spróbować ustawić wysokość rozmiaru treści na znacznie większą niż treść. – danh