Ответ 1
Пока у вас установлен Cancellable Content Touches
в Interface Builder, он должен работать. Вы также можете установить его в коде:
scrollView.canCancelContentTouches = YES;
У меня есть много UIButtons
в пределах UIScrollView
. Эти UIButtons
имеют действия, прикрепленные к ним в Touch Down Repeat
. Моя проблема заключается в том, что мой профиль прокрутки не прокручивается, когда я касаюсь кнопки, а затем прокручиваю ее, но она работает нормально, если я касаюсь ее за пределами кнопки.
Как разрешить прокрутку прокрутки, даже если нажата кнопка?
Пока у вас установлен Cancellable Content Touches
в Interface Builder, он должен работать. Вы также можете установить его в коде:
scrollView.canCancelContentTouches = YES;
Итак view.canCancelContentTouches = YES
работает нормально, если у вас также нет delaysContentTouches
для YES
. Если вы это сделаете, кнопки не будут работать вообще. Что вам нужно сделать, это подкласс UIScrollView
(или UICollectionView
/UITableView
) и реализовать следующее:
Objective-C
- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
if ([view isKindOfClass:UIButton.class]) {
return YES;
}
return [super touchesShouldCancelInContentView:view];
}
Swift 2
override func touchesShouldCancelInContentView(view: UIView) -> Bool {
if view is UIButton {
return true
}
return super.touchesShouldCancelInContentView(view)
}