Próbuję wprowadzić formę Warunków iStrona Warunki, w której przycisk "Kontynuuj" jest aktywny tylko po przewinięciu użytkownika na spód UITextView. Do tej pory ustawiłem moją klasę jako delegata UIScrollView i zaimplementowałem poniższą metodę:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"Checking if at bottom of UITextView");
CGPoint bottomOffset = CGPointMake(0,self.warningTextView.frame.size.height);
//if ([[self.warningTextView contentOffset] isEqualTO:bottomOffset])
{
}
}
Skomentowałem instrukcję if, ponieważ nie jestem pewien, jak sprawdzić, czy UITextView jest na dole. Czy ktoś ma jakieś sugestie?
Wielkie dzięki, James
Odpowiedzi:
13 dla odpowiedzi nr 1UITextView jest podklasą UIScrollView. Dlatego używana metoda delegata UIScrollView jest również dostępna podczas korzystania z UITextView.
Zamiast używać scrollViewDidEndDecelerating
, powinieneś użyć scrollViewDidScroll
, ponieważ przewijanie może zatrzymać przewijanie bez opóźnienia.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height)
{
NSLog(@"at bottom");
}
}
1 dla odpowiedzi nr 2
Wersja Swift dla tego pytania:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height) {
print( "View scrolled to the bottom" )
}
}
0 dla odpowiedzi № 3
To powinno rozwiązać problem. To działa. Używam tego.
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height;
if (bottomEdge >= scrollView.contentSize.height)
{
// we are at the end
}
}