ScrollView не прокручивается при перетаскивании кнопок

У меня есть режим прокрутки, который использовался для прокрутки, когда на нем не было кнопок. Теперь это происходит, и при перетаскивании мыши (на симуляторе ) ничего не происходит (думаю, потому что кнопки нажимаются). Как я могу это исправить?

38
задан Juan Boero 8 April 2016 в 19:12
поделиться

1 ответ

Это происходит потому, что UIButton вложенные представления UIScrollView (я предполагаю, что кнопки добавлены как вложенные представления в вашем случае) отслеживают касания, а не представление прокрутки. Метод UIScrollView touchesShouldCancelInContentView является ключевым здесь. Согласно его описанию: "Возвращаемое значение по умолчанию - YES, если представление не является объектом UIControl; в противном случае возвращается NO.", т.е. для объектов UIControl (кнопки), UIScrollView не пытается отменить касания, что препятствует прокрутке.

Итак, чтобы разрешить прокрутку с помощью кнопок:

  1. Убедитесь, что свойство UIScrollView canCancelContentTouches установлено в YES.
  2. Подкласс UIScrollView и переопределение touchesShouldCancelInContentView для возврата YES, когда объект представления контента является UIButton, например:
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
    if ( [view isKindOfClass:[UIButton class]] ) {
        return YES;
    }

    return [super touchesShouldCancelInContentView:view];
}
96
ответ дан 27 November 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: