我将SWRevealViewController添加到我的应用程序,以及汉堡包堆栈以访问我的菜单。我的应用程序有一个UITableView用于主应用程序视图。我想允许用户使用滑动删除功能从列表中删除项目。
我启用了滑动删除并添加了一个方法调用来处理它。我注意到该方法永远不会被调用。不知道如何让它发挥作用。
非常感谢任何帮助。
我被问到一个代码示例。我没有对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];
}
}
通常,当您执行从右向左滑动时,上面的代码应显示删除按钮。但是,这种情况并没有发生。我的猜测是SWRevealViewController正在吃平移手势识别器。
答案 0 :(得分:4)
在阅读了一个向这个类的制造者提出类似问题的人的线程后,找到了一个解决方案。无论您使用什么类添加手势识别器,都可以将其作为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;
}
答案 1 :(得分:2)
我这样做了&lt; UIGestureRecognizerDelegate&GT;在.h文件中,您正在实现tableview单元格删除功能,并在.m文件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;
}