一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

给UICollectionViewCell绑定手势 long press举例

时间:2015-02-28 编辑:简简单单 来源:一聚教程网

手势绑定功能是最常用的,但是没有经验的朋友,第一次用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

热门栏目