Почему распознаватели жестов пусты, когда UIPageViewController находится в режиме прокрутки

Я создаю подклассы UIPageViewController и ставлю это:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    PO(self.gestureRecognizers);
    PO(self.view.gestureRecognizers);
    PO(self.view.superview.gestureRecognizers);

}

Я получил:

 self.gestureRecognizers: (
        "<UIPanGestureRecognizer: 0x137edf20; state = Possible; view = <_UIPageViewControllerContentView 0x137efe10>; target= <(action=_handlePanGesture:, target=<BGPageViewControllerWithoutTap 0x137659a0>)>>",
        "<UITapGestureRecognizer: 0x137ef520; state = Possible; view = <_UIPageViewControllerContentView 0x137efe10>; target= <(action=_handleTapGesture:, target=<BGPageViewControllerWithoutTap 0x137659a0>)>>"
    )
    2013-08-15 13:03:26.428 isikota[6213:c07] self.view.gestureRecognizers: (
        "<UIPanGestureRecognizer: 0x137edf20; state = Possible; view = <_UIPageViewControllerContentView 0x137efe10>; target= <(action=_handlePanGesture:, target=<BGPageViewControllerWithoutTap 0x137659a0>)>>",
        "<UITapGestureRecognizer: 0x137ef520; state = Possible; view = <_UIPageViewControllerContentView 0x137efe10>; target= <(action=_handleTapGesture:, target=<BGPageViewControllerWithoutTap 0x137659a0>)>>"
    )
    2013-08-15 13:03:26.428 self.view.superview.gestureRecognizers: (null)

Теперь я убедился, что мой UIPageViewController находится в режиме прокрутки, а не в режиме скручивания страницы, и вот что я получил:

2013-08-15 13:14:38.362 [6767:c07] self.gestureRecognizers: (
)
2013-08-15 13:14:38.362 [6767:c07] self.view.gestureRecognizers: (null)
2013-08-15 13:14:38.362 [6767:c07] self.view.superview.gestureRecognizers: (null)

Поскольку распознавание жестов равно нулю, я ничего не могу сделать, чтобы отключить его. Я не могу, например, отключить распознаватель жестов касания, чтобы разрешить нажатия кнопок внутри UIPageViewController.

И что же мне делать?


person Septiadi Agus    schedule 15.08.2013    source источник
comment
Возможно, распознаватели находятся в подпредставлении self.view, а не в self.view или его суперпредставлении.   -  person rob mayoff    schedule 15.08.2013


Ответы (1)


Command+коснитесь ключевого слова gestureRecognizers и перейдите к исходному коду, строка комментария гласит:

// An array of UIGestureRecognizers pre-configured to handle user interaction. Initially attached to a view in the UIPageViewController's hierarchy, they can be placed on an arbitrary view to change the region in which the page view controller will respond to user gestures.
// Only populated if transition style is 'UIPageViewControllerTransitionStylePageCurl'

Так что в режиме прокрутки, неудивительно, это пусто

Я пришел к этому сегодня. У меня есть UIPageViewController с несколькими UITableViews внутри, но UITalbeView не может получить жест касания ( didSelectRowAtIndexPath делегата UITableView НЕ запускается).

Я ищу решение сейчас и нашел этот пост. Я могу ответить на вопрос Агуса, но понятия не имею о своем...

person Dong Ma    schedule 01.07.2014
comment
Как и многие вещи, которые делает Apple, кажется, что для этого несоответствия нет веской причины. Но так оно и есть. Хотелось бы решения... - person davidgoli; 26.02.2016