我正在使用PKRevealController
滑动条菜单,在我的前端控制器中我有一个表格视图canEditRowAtIndexPath
,因为我实现PKRevealController
了在滑动每个单元格停止显示时出现的删除按钮,我怎样才能让它再次工作?
2 回答
截至撰写本文时,还没有已知的方法(至少对我而言)可以在我的控制器端解决此问题,以便在所有可以想象的条件下正常工作。即您需要自己处理上述案件。因此,控制器将属性公开revealPanGestureRecognizer
给您。
简单地说,当实例化控制器时,在你的选项字典中传递这个选项:
NSDictionary *options = @{
PKRevealControllerRecognizesPanningOnFrontViewKey : @NO
};
这将禁用整个前视图的基于平移的显示。现在,您可以使用revealPanGestureRecognizer 并将其添加到您希望平移的任何视图中,以启用基于手势的显示。
我建议(如果使用带有可编辑单元格的基于表格的环境)您将其添加revealPanGestureRecognizer
到您的前视图控制器的导航栏(它很可能有):
[self.navigationController.navigationBar addGestureRecognizer:self.revealController.revealPanGestureRecognizer];
瞧,平移不再干扰您的表格视图。
(有关这方面的更多信息以及一些基本原理,请参阅https://github.com/pkluz/PKRevealController/pull/76)
--
注意:还有另一种使用 UIGestureRecognizerDelegate 协议方法来处理此问题的方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
虽然看到 UITableView 有大约五个手势识别器并且它在全局范围内处理单元格的编辑模式可能会有点混乱......
这适用于谁使用PkRevealController
:
self.revealController.frontViewController.revealController.recognizesPanningOnFrontView = NO;
这对我有用。
更新:我添加了推送显示视图控制器的代码。现在在视图控制器上只有滑动将被启用,而在其他类中则不会。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([viewController isMemberOfClass:[ViewController class]])
self.revealController.frontViewController.revealController.recognizesPanningOnFrontView = YES;
else
self.revealController.frontViewController.revealController.recognizesPanningOnFrontView = NO;
}
你必须推 PKRevealcontroller。因此,从该类中使用UINavigationController
委托方法并进行检查并添加这些行。
我们可以在初始化显示控制器时使用 Option 参数,但这并没有完全解决我的目的。