使用 UIPanGestureRecognizer UINavigationController 向后滑动不起作用
Posted
技术标签:
【中文标题】使用 UIPanGestureRecognizer UINavigationController 向后滑动不起作用【英文标题】:With UIPanGestureRecognizer UINavigationController swipe to back is not working 【发布时间】:2016-10-04 12:13:08 【问题描述】:在cellForRowAtIndexPath
创建cell
时,我还把UIPanGestureRecognizer
添加到cell
,并根据要求实现了所有处理。
这个Tableview
包含在myViewController
中,而myViewController
又包含在UINavigationController
中。
使用UIPanGestureRecognizer
UINavigationController
向后滑动不起作用。
当用户开始从手机的最左侧滑动时,我该怎么做?它执行 UINavigationController swipe to back
而不是我的手机平移手势。
-(void)move:(PanGestureRecognizer *)gesture
CGPoint location = [gesture locationInView:self];
NSIndexPath *swipedIndexPath = [self indexPathForRowAtPoint:location];
TableViewCell *swipedCell = [self cellForRowAtIndexPath:swipedIndexPath];
CGRect cellRect = swipedCell.frame;
if(location.x < 75)
?????
.
.
.
//my pan gesture required functionality
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
return YES;
【问题讨论】:
【参考方案1】:使用requireGestureRecognizerToFail
。
在您的 viewController 中调用:[yourPanGesture requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer
或
[cell.gestureRecognizers enumerateObjectsUsingBlock:^(__kindof UIGestureRecognizer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)
if ([obj isKindOfClass:[UIPanGestureRecognizer class]])
[obj requireGestureRecognizerToFail:interactivePopGestureRecognizer];
];
【讨论】:
以上是关于使用 UIPanGestureRecognizer UINavigationController 向后滑动不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 UIPanGestureRecognizer 移动对象时会有延迟?
UIPanGestureRecognizer ***视图未获取事件,子视图使用它们
在 UITableView 上滑动删除以使用 UIPanGestureRecognizer
在 UIPanGestureRecognizer 中使用velocityInView