覆盖UITableView上的滑动手势

时间:2011-09-03 21:55:01

标签: iphone objective-c cocoa-touch

我有一个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 个答案:

答案 0 :(得分:3)

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

recognizer.direction = UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft;

答案 1 :(得分:3)

只需在UITableViewCellEditingStyleNone方法中返回tableView:editingStyleForRowAtIndexPath:

答案 2 :(得分: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,我只需要再次设置方向。这很容易。对吗?