#ios #objective-c
#iOS #objective-c
Вопрос:
Нужна помощь AMSlideMenu
с использованием https://github.com/SocialObjects-Software/AMSlideMenu
В проекте, который я создаю, мне нужно было отключить AMSlideMenu
прокрутку, чтобы я мог использовать UISwipeGestureRecognize
для выполнения другого действия.
Основное пролистывание отключено [self disableSlidePanGestureForLeftMenu];
, и меню доступно нажатием menuBtn
, но я хотел бы использовать UISwipeGestureRecognizer
, которое AMSlideMenu
, похоже, отключается.
Есть идеи о том, как я мог бы восстановить UISwipeGestureRecognizer
для своего проекта?
Спасибо!
- (void)viewDidLoad
{
[super viewDidLoad];
[self disableSlidePanGestureForLeftMenu];
UIButton *menuBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[menuBtn addTarget:self
action:@selector(menuButtonTapped:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:menuBtn];
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
[leftSwipe setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:leftSwipe];
UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
[rightSwipe setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:rightSwipe];
}
- (void)menuButtonTapped:(id)sender
{
[self.mainSlideMenu openLeftMenu];
}
-(void) swipeRecognized:(UISwipeGestureRecognizer *)swipe {
int pageNum;
switch (swipe.direction)
{
case UISwipeGestureRecognizerDirectionLeft:{
pageNum ;
break;
}
case UISwipeGestureRecognizerDirectionRight:{
pageNum--;
break;
}
default:
break;
}
}
Комментарии:
1. Можете ли вы поделиться / добавить метод swipeRecognized:, который вы написали?
2. Конечно, я обновил свой вопрос с его помощью. На данный момент я только меняю нумерацию страниц вверх и вниз, пока пытаюсь заставить его работать, но как только он заработает, я хотел бы использовать его для навигации по разным разделам
Ответ №1:
Изменение жеста в табличном представлении
- (void)viewDidLoad
{
[super viewDidLoad];
[self disableSlidePanGestureForLeftMenu];
UIButton *menuBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[menuBtn addTarget:self
action:@selector(menuButtonTapped:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:menuBtn];
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
[leftSwipe setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.tableView addGestureRecognizer:leftSwipe];
UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
[rightSwipe setDirection:UISwipeGestureRecognizerDirectionRight];
[self.tableView addGestureRecognizer:rightSwipe];
}
- (void)menuButtonTapped:(id)sender
{
[self.mainSlideMenu openLeftMenu];
}
-(void) swipeRecognized:(UISwipeGestureRecognizer *)swipe {
int pageNum;
switch (swipe.direction)
{
case UISwipeGestureRecognizerDirectionLeft:{
pageNum ;
break;
}
case UISwipeGestureRecognizerDirectionRight:{
pageNum--;
break;
}
default:
break;
}
}
А теперь просто добавьте метод делегирования
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
Ответ №2:
Вам нужно остановить жест панорамирования влево / вправо из класса контроллера левого меню.
А затем поместите свой жест салфетки для определенного контроллера представления.
Выполните следующие действия, чтобы остановить жест салфетки для левого меню:
1) Перейдите к AMSlideMenuMainViewController.m
классу в этом - (void)setup
методе выбора.
2) Комментарий после строк из этого метода остановит жест салфетки.
self.panGesture = [[UIPanGestureRecognizer alloc] init];
[self.panGesture addTarget:self action:@selector(handlePanGesture:)];
[self.currentActiveNVC.view addGestureRecognizer:self.panGesture];
3) После комментирования этих строк создайте жест салфетки в вашем ViewController и обработайте свою пользовательскую логику.