UISegmentControl в UIPageViewController

У меня в нем UIPageViewController есть у меня 4 страницы. На одной из моих страниц есть UISegmentControl, где пользователь либо нажимает, либо проводит по странице, чтобы изменить сегменты. Я думаю, что это внутри UIPageController, поэтому свайп переходит на другую страницу, а не смахивает в UISegmentControl, или это может быть какая-то глупая ошибка с моей стороны. вот что я сделал. Я добавил два распознавателя жестов: проведите пальцем влево и проведите пальцем вправо. и сделал это в раскадровке

SwipeGesture


person Misha    schedule 18.01.2016    source источник
comment
Да, из-за UIPageController свайп перенаправляется на базовый scrollView, что на самом деле имеет смысл. Также UISegmentControl работает по касанию, а не по смахиванию, поэтому я не думаю, что у вас проблема ...   -  person deadbeef    schedule 18.01.2016
comment
@deadbeef да, я правильно понял последнюю часть, поэтому я добавил UISwipeGesture, чтобы я мог перенаправить на управление сегментами и соответственно перезагрузить tableView. Что касается Первой части, как мне это сделать? возможно, использовать UIScrollView?   -  person Misha    schedule 18.01.2016
comment
Вы должны заставить ваши распознаватели жестов работать вместе с распознавателем жестов UIPageController. Это делается путем реализации некоторых конкретных методов в вашем делегате. Советую проверить документацию или задать конкретный вопрос по этому поводу. Начните с поиска Сделайте так, чтобы распознаватели нескольких жестов работали вместе или что-то подобное.   -  person deadbeef    schedule 18.01.2016
comment
@deadbeef Я не думаю, что речь идет о нескольких жестах, это больше для распознавания представлений в childVc, игнорируя в parentVC   -  person Misha    schedule 18.01.2016


Ответы (1)


Два решения:

1. Обработка всех жестов смахивания в UIPageViewController. Если вы не хотите изменять контроллер детального представления, вы можете добавить общедоступную функцию для изменения некоторых значений. В UIPageViewControllerDataSource вы можете вернуть любой контроллер представления, который хотите представить.

2. Используйте UIGestureRecognizerDelegate. Если вы не хотите получать этот жест, просто верните NO / false. (Установите делегата для жеста в UIPageViewController)

// get gesture recognizer and set delegate    
self.pageViewController!.gestureRecognizers
// decide if page controller should receive gesture
public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool
person Lumialxk    schedule 18.01.2016
comment
Спасибо :) Я не совсем понимаю их, но попробую - person Misha; 18.01.2016
comment
Привет, я не понимаю, какой метод делегирования мне использовать? - person Misha; 18.01.2016
comment
У меня есть BaseViewController, который является родительским для всех дочерних VC, когда я добавляю этот код в if ([touch.view isKindOfClass: [MYClass class]]) Это дает мне ошибку :( - person Misha; 18.01.2016