ios делает панель навигации кликабельной
Просто пытаюсь сделать навигационную панель моего навигационного контроллера кликабельной. Хорошо работает с
UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(toggleMenu)];
tapRecon.delegate = self;
tapRecon.numberOfTapsRequired = 1;
[self.navigationBar addGestureRecognizer:tapRecon];
но когда у меня есть кнопка "Назад", невозможно нажать на нее (жест может занять кнопку).
Итак, я попробовал кое-что найти здесь:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return (![[[touch view] class] isSubclassOfClass:[UIButton class]]);
}
И ничего, потому что [touch view]
всегда есть UINavigationBar...
Последнее, что я пытался сделать, это установить cancelsTouchesInView
в NO
, Все в порядке, мы можем нажать на кнопку назад, но toggleMenu
действие UITapGestureRecognizer
все еще называется.
У вас есть идея, чтобы кнопка возврата снова заработала, но не звонила toggleMenu
в то же время?
Спасибо!
РЕДАКТИРОВАТЬ:
Жюст нашел, как это сделать:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
for (UIView* sub in self.navigationBar.subviews) {
NSString *cl = NSStringFromClass([sub class]);
if ([cl isEqualToString:@"UINavigationItemButtonView"]) {
CGRect bback = sub.frame;
CGPoint pointInView = [touch locationInView:gestureRecognizer.view];
return !CGRectContainsPoint(bback, pointInView);
}
}
return YES;
}
2 ответа
Ну, вы можете сделать кнопку, которая окружает панель навигации, и сделать еще одну кнопку для нажатия назад. Обязательно расположите его сверху кнопки навигационной панели в IB
Это решение для кода Swift:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
for view in self.navigationBar.subviews {
if let button = view as? UIButton {
if touch.view.isEqual(button) {
return false
}
}
}
return true
}
Просто поместите это в ваш делегат для вашего UIGestureRecognizer
,