Я использую проект SWRevealViewController Джона Люха для своего приложения и столкнулся с одной незначительной проблемой. Что я не могу понять прямо.
Я использую 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;
}
}