给UICollectionViewCell绑定手势 long press举例

手势是苹果手机一个比较有意思的功能了,下面我们给开发者介绍一个UICollectionViewCell绑定手势 long press举例

手势绑定功能是最常用的,但是没有经验的朋友,第一次用swift实现对UICollectionView集合中每个cell进行手势绑定,就有些茫然了。如果对swift手势和collectionview的实现还不是很清晰的话,请查看我这两篇swift版本手势功能简单讲以及教程:swift下使用collectionView+coreData原理+代码注释,剩下的就是我遇到的较痛苦的问题:如何给UICollectionViewCell绑定手势,就是给每个cell绑定手势!!

首先得实现代理

 代码如下 复制代码
class ViewController:
 UIViewController,
 UICollectionViewDelegateFlowLayout,
 UICollectionViewDataSource,
 UIGestureRecognizerDelegate    //手势的代理
{
 ......
}

给每个cell实现代码绑定手势

 代码如下 复制代码

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("newCell", forIndexPath: indexPath) as myCollectionViewCell
    
    cell.backgroundColor=UIColor.blackColor()
    var z: AnyObject! = dataArr[indexPath.row].valueForKey("zhangdanri")
    var h: AnyObject! = dataArr[indexPath.row].valueForKey("huankuanri")
    cell.textLabel?.text = "(z)~(h)"
    cell.textLabel1?.text=dataArr[indexPath.row].valueForKey("bank") as? String
    //这个tag是很有用的
    cell.tag = indexPath.row
    //最重要是下面这三行,记住是在这里绑定手势的,我刚开始一直不知道
    lp = UILongPressGestureRecognizer(target: self, action: Selector("longPress:"))
    lp.delegate = self
    cell.addGestureRecognizer(lp)
    return cell
}

实现long press的callback函数

 代码如下 复制代码

func longPress(recognizer: UILongPressGestureRecognizer){
 //这就是你当前选中的cell的数组下标
 var index = recognizer.view!.tag
    //代码部分
    if(recognizer.state == .Began)//很重要!!就是按0.5秒触发事件的开始
    {
     .....
    }
}

每个事件都是有状态的,状态也是一种过程:开始-》改变-》结束 ,如果上面的代码不进行开始判断,则长按0.5秒后你的实际代码会执行好几次!!!

Began
Changed
Ended
Cancelled
Failed

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值