Я использую awesome SWRevealViewController project by John Lluch для моего приложения, и у меня он работает отлично. Я столкнулся с одной из второстепенных проблем, которые, похоже, не могут пробиться. Это объяснение похоже на длинный, но голый со мной, и я постараюсь быть кратким, насколько это возможно.PanGestureRecognizer не запускает UIScrollView при использовании SWRevealController
Я использую SWRevealViewController для доступа к меню параметров моих приложений из любого места в моем приложении, просто прокручивая вправо, а основные слайды отображаются, чтобы открыть меню за ним.
Это управление распознаванием жестов, которое добавляется к основному виду. Чтобы улучшить UX, я создаю кнопку, чтобы закрыть основной вид, когда он будет выведен из строя, поэтому все, что пользователь должен сделать, чтобы закрыть меню, - это нажать небольшую часть представления, которое показывает или захватывает представление и тянет его назад.
Он отлично работает, за исключением одного из моих представлений, в котором большинство представлений представляет собой UIScrollView. Чтобы заставить его работать, я должен добавить распознаватель жестов в UIScrollView, а также супер просмотр. Но по какой-то причине, как только взгляд выведен из строя, распознаватель жестов салфетки перестает отвечать. Но это происходит только в том представлении, где большая часть экрана является видом прокрутки, поэтому пользователь захватывает экран назад, это вид прокрутки.
Надеюсь, это было понятно. Любой свет, который вы, ребята, можете сиять на этом, будет очень полезен.
-(void)viewDidAppear:(BOOL)animated {
// so the user can tap the button to show the menu
[menuButton addTarget:self.revealViewController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];
// so the user can swipe to show the menu
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
// so the user can swipe the scrollview to show the menu
[mainScrollView addGestureRecognizer:self.revealViewController.panGestureRecognizer];
self.revealViewController.delegate = self;
}
- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position {
if (position == FrontViewPositionRight) {
//create the button so the use can tap to close the menu
returnButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[returnButton addTarget:self.revealViewController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:returnButton];
} else {
[returnButton removeFromSuperview];
returnButton = nil;
}
}