2011-09-03 91 views
5

我有一个UITableView。我在此表中添加了一个UIGestureRecognizer,用于查找单元格上的滑动,并在该表上检测到滑动时在该表上进行编辑。当我向右滑动时,确实可以在桌面上进行编辑。但是,当我向左滑动时,单元格右侧会出现默认的红色删除按钮。我怎样才能禁用这种默认行为,并使其如此,如果我向左或向右滑动,我会在任一方向上进行编辑?覆盖UITableView上的滑动手势

- (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

tableView:editingStyleForRowAtIndexPath:方法只返回UITableViewCellEditingStyleNone

+0

这就是我一直在寻找,谢谢 :) – bitmoe

3

UISwipeGestureRecognizer有一个方向属性。您可以设置到右侧和左侧刷卡:

recognizer.direction = UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft; 
+0

我得到 – bitmoe

+1

你看,你把'UIGestureRecognizer * recognizer' ...修改成'UISwipeGestureRecognizer * recognizer' –

+0

由于“找不到类型UIGestureRecognizer的方向”,现在的工作 – bitmoe

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,我只需要设定的方向again.It的easy.Right?