您的位置:首页 > 移动开发 > IOS开发

ios中TableView的长按触发事件

2016-03-02 11:54 441 查看
长按TableView的Cell做一些操作时,就要先捕获TableView的长按事件,然后判断是第几行,或者直接对Cell监控长按事件,对于性能来说,当然是前者好一点,也就是说捕获TableView的长按事件,如下:

.在viewDidLoad事件中加入:

OC代码

1
//tableview的长按事件
2
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
3
                                      
initWithTarget:self action:@selector(handleLongPress:)];
//声明长按对象
4
lpgr.minimumPressDuration = 1.0;
//seconds  设置长按多长事件触发长按事件
5
[self.tableView addGestureRecognizer:lpgr];
//把该事件加载到tableview对象上
监控函数handleLongPress的内容如下:

OC代码

01
-(
void
)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
02
{
03
    
CGPoint p = [gestureRecognizer locationInView:self.tableView];
//点击的位置
04
    
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p];
//根据点击的坐标得出点击的indexpath
05
    
if
(gestureRecognizer.state == UIGestureRecognizerStateBegan)
//长按事件开始
06
    
{
07
        
UIAlertView * addView = [[UIAlertView alloc] initWithTitle:
@"提示"

message:
@"加入书签,是否继续?"
delegate
:self cancelButtonTitle:
@"确定"

otherButtonTitles:
@"取消"
,nil];
08
        
addView.alertViewStyle = UIAlertViewStyleDefault;
09
        
[addView show];
10
        
self.tableviewcurrentcoursename=[[self.fetchedResultsController objectAtIndexPath:indexPath] name];
11
    
}
12
    
else

if
(gestureRecognizer.state == UIGestureRecognizerStateEnded)
//长按事件结束
13
    
{
14
        
NSLog(
@"UIGestureRecognizerStateEnded"
);
15
    
}
16
    
else

if
(gestureRecognizer.state == UIGestureRecognizerStateChanged)
17
    
{
18
        
NSLog(
@"UIGestureRecognizerStateChanged"
);
19
    
}
20
    
else

if
(gestureRecognizer.state == UIGestureRecognizerStateCancelled)
21
    
{
22
        
NSLog(
@"UIGestureRecognizerStateCancelled"
);
23
    
}
24
    
else

if
(gestureRecognizer.state ==UIGestureRecognizerStateFailed)
25
    
{
26
        
NSLog(
@"UIGestureRecognizerStateFailed"
);
27
    
}
28
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息