PkRevealController和canEditRowAtIndexPath

时间:2013-01-29 19:23:07

标签: iphone ios objective-c xcode

我使用PKRevealController作为幻灯片菜单,在我的前端控制器中我有一个带有canEditRowAtIndexPath的表格视图,因为我实现了PKRevealController刷卡时出现的删除按钮细胞停止显示,我怎么能再次使用呢?

2 个答案:

答案 0 :(得分:3)

截至本文撰写时,至少对我来说,没有任何已知的方法可以在控制器的末端修复此问题,以便在可以想象的所有条件下正常工作。即你需要自己处理这个案子。因此,控制器会向您公开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有五个手势识别器并且它在全球范围内处理单元格的编辑模式会有点麻烦......

答案 1 :(得分:1)

这适用于使用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参数,但这并不能完全解决我的目的。