У меня есть UIScrollView с подкачкой в нем (так что типичная модель с UIPageControl и перетаскивание/щелчок влево и вправо между страницами), и у меня есть это нормально работает. Странно то, что когда я хотел избавиться от подпрыгивания (чтобы вы не могли видеть черный за интерфейсом пользователя с левой и правой сторон), внезапный пейджинг больше не работает.UIScrollView - (bounces = NO), кажется, переопределяет (pagingEnabled = YES)
Другими словами, когда:
scrollView.pagingEnabled = YES;
scrollView.bounces = YES;
Все работает отлично, за исключением того, я не люблю подпрыгивая на странице (0) и страницы (длина-1). Но когда я делаю это:
scrollView.pagingEnabled = YES;
scrollView.bounces = NO;
Он останавливается щелкать на место на каждой странице, вместо того, чтобы обрабатывать все страницы вместе, как одну длинную страницу. Похоже, что по какой-то причине пейджинг зависит от подпрыгивания, что прекрасно, если я могу как-то остановить прыжок. Итак, есть ли другой способ избавиться от него? Или есть что-то, что я делаю неправильно?
EDIT: Решение:
@interface PagingScrollView : UIScrollView
@end
@implementation PagingScrollView
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
self.pagingEnabled = YES;
self.bounces = YES;
}
return self;
}
- (void)setContentOffset:(CGPoint)offset
{
CGRect frame = [self frame];
CGSize contentSize = [self contentSize];
CGPoint contentOffset = [self contentOffset];
// Clamp the offset.
if (offset.x <= 0)
offset.x = 0;
else if (offset.x > contentSize.width - frame.size.width)
offset.x = contentSize.width - frame.size.width;
if (offset.y <= 0)
offset.y = 0;
else if (offset.y > contentSize.height - frame.size.height)
offset.y = contentSize.height - frame.size.height;
// Update only if necessary
if (offset.x != contentOffset.x || offset.y != contentOffset.y)
{
[super setContentOffset:offset];
}
}
@end
Вау, это глупо. Хорошо, я попробую это, вы можете просто стать «большим победителем» в этой теме. – Eli
Он работает, но вам нужно переопределить -setContentOffset, not -setContentOffset: анимированный, поскольку последний вызовет функцию, которая не всегда вызывается, тогда как первая переопределяет функцию-мутатор для contentOffset, поэтому вы поймаете все случаи. – Eli
Это странно. Я делаю много такого, и обычно метод одиночных параметров вызывает анимированный вариант с анимированным: ДА – rpetrich