UIButton Не разрешает прокрутку UIScrollView

У меня есть много UIButtons в пределах UIScrollView. Эти UIButtons имеют действия, прикрепленные к ним в Touch Down Repeat. Моя проблема заключается в том, что мой профиль прокрутки не прокручивается, когда я касаюсь кнопки, а затем прокручиваю ее, но она работает нормально, если я касаюсь ее за пределами кнопки.

Как разрешить прокрутку прокрутки, даже если нажата кнопка?

Ответ 1

Пока у вас установлен Cancellable Content Touches в Interface Builder, он должен работать. Вы также можете установить его в коде:

scrollView.canCancelContentTouches = YES;

Ответ 2

Итак 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)
}