在UITableView上覆盖滑动手势

5

我有一个UITableView。我向其中添加了一个UIGestureRecognizer,以便在单元格上检测到滑动手势时启用对该表的编辑。当我向右滑动时,确实可以在表上启用编辑功能。然而,当我向左滑动时,在单元格的右侧会出现默认的红色删除按钮。如何禁用这种默认行为,并使得无论我向左或向右滑动,都能够进入编辑状态?

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
    foldersTable.editing=YES;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIGestureRecognizer *recognizer;
    recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
    [foldersTable addGestureRecognizer:recognizer];
    [recognizer release];

}
3个回答

3

在UISwipeGestureRecognizer上有一个direction属性。您可以将其设置为向右和向左滑动:

recognizer.direction = UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft;

我收到了“找不到UIGestureRecognizer类型的方向”的错误信息。 - bitmoe
1
你看到了 UIGestureRecognizer *recognizer 的位置... 把它改成 UISwipeGestureRecognizer *recognizer - Benjamin Mayo

3
在你的tableView:editingStyleForRowAtIndexPath:方法中,只需返回UITableViewCellEditingStyleNone即可。

0

我正在使用另一种方法来解决这个问题。

NSMutableArray *tableViewGestures = [[NSMutableArray alloc]initWithArray:[self.tableView gestureRecognizers]];
[[tableViewGestures objectAtIndex:2] setDirection:UISwipeGestureRecognizerDirectionLeft];
NSLog(@"directions %@" , [tableViewGestures objectAtIndex:2] );

NSArray *newTableViewGestures = [[NSArray alloc]initWithArray:tableViewGestures];
[self.tableView setGestureRecognizers:newTableViewGestures];

我获取了tableViewGestures NSArray并对其进行了重置。如果我想使用SwipeGestureRecognizerDirectionRigth,我只需要再次设置方向即可。很容易,对吧?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接