Ответ 1
Это происходит потому, что UIButton
subviews UIScrollView
(я предполагаю, что кнопки добавляются как подвид в вашем случае) отслеживают штрихи, а не прокрутку. UIScrollView
метод touchesShouldCancelInContentView
является ключевым здесь. Согласно его описанию: "Возвращаемое по умолчанию значение равно YES, если view не является объектом 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];
}