你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> 給UICollectionViewCell綁定手勢 long press舉例

給UICollectionViewCell綁定手勢 long press舉例

編輯:IOS7技巧
手勢是蘋果手機一個比較有意思的功能了,下面我們給開發者介紹一個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

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved