У меня есть режим прокрутки, который использовался для прокрутки, когда на нем не было кнопок. Теперь это происходит, и при перетаскивании мыши (на симуляторе ) ничего не происходит (думаю, потому что кнопки нажимаются). Как я могу это исправить?
Это происходит потому, что UIButton
вложенные представления UIScrollView
(я предполагаю, что кнопки добавлены как вложенные представления в вашем случае) отслеживают касания, а не представление прокрутки. Метод UIScrollView
touchesShouldCancelInContentView
является ключевым здесь. Согласно его описанию: "Возвращаемое значение по умолчанию - YES, если представление не является объектом UIControl
; в противном случае возвращается NO
.", т.е. для объектов UIControl
(кнопки), UIScrollView
не пытается отменить касания, что препятствует прокрутке.
Итак, чтобы разрешить прокрутку с помощью кнопок:
UIScrollView
canCancelContentTouches
установлено в YES
. UIScrollView
и переопределение touchesShouldCancelInContentView
для возврата YES
, когда объект представления контента является UIButton
, например: - (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if ( [view isKindOfClass:[UIButton class]] ) {
return YES;
}
return [super touchesShouldCancelInContentView:view];
}