UIButton не позволяет прокручивать UIScrollView - PullRequest
13 голосов
/ 21 февраля 2011

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

Как я могу разрешить прокрутке моего вида прокрутки даже при нажатии кнопки?

Ответы [ 2 ]

12 голосов
/ 21 февраля 2011

Пока у вас установлен Cancellable Content Touches в Интерфейсном Разработчике, он должен работать.Вы также можете установить его в коде:

scrollView.canCancelContentTouches = YES;
9 голосов
/ 18 сентября 2015

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