swift 单元格中的 GestureRecognizer

swift GestureRecognizer in cells

我想长按 tableview 单元格,但出现错误:

UIGestureRecognizer.Type' does not have a member named 'state'

这是代码

 override func viewDidLoad() {
        super.viewDidLoad()

        var gesture: UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
        gesture.minimumPressDuration = 2.0
        self.view.addGestureRecognizer(gesture)

        }

func longpressed() {

    if(UIGestureRecognizer.state == UIGestureRecognizerState.Ended){

        print("ended")
    } else if (UIGestureRecognizer.state == UIGestureRecognizerState.Began){

        print("began")


    }
}

是的,我已经创建了 Bridging-Header.h 并导入了这个文件:

#import <UIKit/UIGestureRecognizerSubclass.h>

我要swift教程而不是objective-c!

在你的 longPress 方法中试试这个:

func longpressed(sender: UILongPressGestureRecognizer) {

var state = sender.state

if(state.state == UIGestureRecognizerState.Ended){
    print("ended")

} else if (state.state == UIGestureRecognizerState.Began){
    print("began")

}
}

为你的 UITableView 添加一个手势识别器就像

    var gestureRec = UILongPressGestureRecognizer(target: self, action: "didTap:")
    self.tableView.addGestureRecognizer(gestureRec)

实现一个 didTap 函数,它看起来像这样。

func didTap(sender : UIGestureRecognizer)
{
    if sender.state == .Began {
        var location = sender.locationInView(self.tableView)
        var indexPath = self.tableView.indexPathForRowAtPoint(location)
        var cell = self.tableView.cellForRowAtIndexPath(indexPath!)
    }
}

这应该有效。