Так что 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)
}