SWRevealViewController和TableView – 刷卡删除不起作用

我添加了SWRevealViewController到我的应用程序,以及汉堡堆栈访问我的菜单。 我的应用程序有一个主应用程序视图的UITableView。 我想允许用户使用滑动删除function从列表中删除项目。

我启用了滑动删除,并添加了一个方法调用来处理这个。 我注意到这个方法永远不会被调用。 不知道如何得到这个工作。

任何帮助将不胜感激。

我被要求提供一个代码示例。 我没有对SWRevealViewController标准源代码进行任何更改。 在我的TableView代码中,我添加了以下内容:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } 

通常,上面的代码应该显示一个删除button,当你做一个从左到右的滑动。 但是,这并没有发生。 我的猜测是SWRevealViewController正在吃平移手势识别器。

刚读完一个男生的post,向这个class级的制造者问了一个类似的问题,就find了解决办法。 无论您使用哪个类添加手势识别器,都将其作为SWRevealController的代表,然后粘贴到此方法中。

 #pragma mark - SWRevealViewControllerDelegate - (BOOL)revealControllerPanGestureShouldBegin:(SWRevealViewController *)revealController { float velocity = [revealController.panGestureRecognizer velocityInView:self.view].x; if (velocity < 0 && self.revealViewController.frontViewPosition == FrontViewPositionLeft) return NO; else return YES; } 

我已经做了这样的<UIGestureRecognizerDelegate>在你正在实现tableview单元格删除function和.m文件中的.h文件viewDidLoad

 [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; self.revealViewController.panGestureRecognizer.delegate = self; 

之后,只需使用这种方法

 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) return NO; else return YES; }