СТАРЫЙ ОТВЕТ: Если ваш UIPageViewController
имеет transitionStyle
из UIPageViewControllerTransitionStyleScroll
, и вы используете iOS 6.0+, то вы не можете использовать метод gestureRecognizer:shouldReceiveTouch:
, потому что нетспособ установить делегата на self
на gestureRecognizers
, так как pageViewController.gestureRecognizers
вернет ноль.См. UIPageViewController не возвращает распознаватели жестов в iOS 6 для получения дополнительной информации об этом.
Если вы просто хотите убедиться, что ваш UIPageViewController
передает события касания кнопки в UIButton, вы можете использовать
for (UIScrollView *view in _pageViewController.view.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
view.delaysContentTouches = NO;
}
}
, если у вас transitionStyle
из UIPageViewControllerTransitionStyleScroll
и вы используете iOS 6.0 +.
См. этот ответ о том, почему delaysContentTouches = NO
требуетсядля некоторых случаев UIButton
в UIScrollView
ОБНОВЛЕНИЕ: После небольшого исследования выясняется, что если ваша проблема заключается в том, что щелчок UIButton
кажется тольконазывается иногда , тогда это, вероятно, на самом деле желаемое поведение внутри UIScrollView
.UIScrollView
использует свойство delaysContentTouches , чтобы автоматически определять, пытался ли пользователь прокрутить или пытался нажать кнопку в представлении прокрутки.Я бы предположил, что лучше не изменять это поведение по умолчанию на NO
, так как это приведет к невозможности прокрутки, если палец пользователя находится над кнопкой.