Я использую KVO
для наблюдения за свойством contentOffset
UIScrollView
. Когда пользователь потянет scrollView
вниз и contentOffset.y == -50.0
, я хочу, чтобы прокрутка отображалась, как будто пользователь взял свой палец с экрана. Есть какой-либо способ сделать это?Программно отменить прокрутку пользователя UIScrollView
0
A
ответ
0
Да, вы можете ограничить его смещение до -50.0.
- (void) observeValueForKeyPath:(NSString*)keyPath
ofObject:(id)object
change:(NSDictionary*)change
context:(void*)context
{
//if this is not the only KVO then you should first perform some checks
//if the object and keypath are correct
//otherwise you can omit the check or modify, if your UIScrollView is subclassed
if ([object isKindOfClass:[UIScrollView class]])
{
UIScrollView *scrl = (UIScrollView *)object;
CGPoint offset = scrl.contentOffset;
if (offset.y < -50.0f)
{
offset.y = -50.0f;
scrl.contentOffset = offset;
}
}
}
Вы можете рассмотреть вопрос о переносе этого кода в scrollView
методов делегата (didScroll:
и др. КВО является отличным инструментом, но это может быть слишком дорого для быстро меняющихся значений.
Спасибо за ответ, но к сожалению, установка свойства contentOffset scrollview не делает действие scrollview, как пользователь, отпустить его. Я просто попробовал его там. –
Хм, возможно, я понял, что вы ошибаетесь. Поэтому вы хотите, чтобы scrollView продолжал прокручивать, как если бы пользователь был поднят его палец? В этом случае я попробую установить 'touchesEnabled' в' NO', когда 'y' достигает -50.0, но вы также для реализации метода делегата 'didEndScrollingAnimation', где вы могли бы повторно использовать штрихи для этого' scrollView': я бы определенно переместил весь код, связанный с поведением, на 'делегировать' методы и вырезать KVO в этом конкретном случае. –