UIScrollView: отключить прокрутку при масштабировании - PullRequest
2 голосов
/ 28 декабря 2010

Может кто-нибудь посоветовать, как отключить прокрутку при масштабировании в iOS4? У меня есть утилита, работающая на iOS3, и я отключил прокрутку во время увеличения, переопределив метод setTransform в представлении содержимого, например:

- (void)setTransform:(CGAffineTransform)newValue;
{ 
 [(UIScrollView*)self.superview setScrollEnabled:NO];
 [super setTransform:newValue];
}

но в iOS4 этот трюк не работает.

Большое спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 28 июня 2012

Я думаю, вы можете использовать некоторые из методов UIScrollViewDelegate, например:

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view //available starting with iOS 3.2
{
     [scrollView setScrollEnabled:FALSE];
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
     if(scale == 1) 
        [scrollView setScrollEnabled:TRUE];
}
0 голосов
/ 12 декабря 2013

Попробовал метод Джорджа, так как казалось, что он будет работать, но безуспешно.Проверил документы и пишет: «Когда прокрутка отключена, представление прокрутки не принимает сенсорные события; оно направляет их вверх по цепочке респондента».так что это не может работать, поскольку мы получаем события касания зума.Поэтому я попробовал следующее, и это сработало ...

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
    peggedContentOffset = scrollView.contentOffset;
}

- (void) scrollViewDidZoom:(UIScrollView *)scrollView 
{
    scrollView.contentOffset = peggedContentOffset;
}

Это работает, захватывая contentOffset, когда начинается наше масштабирование, и постоянно сбрасывая его, пока мы масштабируем.Я уверен, что немного более причудливый код может центрировать масштаб в точке увеличения, тогда как это просто блокирует верхнюю часть таблицы ... но это делает свою работу.

...