单元格中的 swift GestureRecognizer

Posted

技术标签:

【中文标题】单元格中的 swift GestureRecognizer【英文标题】:swift GestureRecognizer in cells 【发布时间】:2015-08-23 15:43:11 【问题描述】:

我想做长按tableview单元格,但我收到错误:

UIGestureRecognizer.Type' 没有名为 '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!

【问题讨论】:

您是否尝试过为每个单元格对象添加手势?无需导入此类。 @Amit89 感谢您的回复,此代码在 Tableview 中,如何在每个单元格中添加手势? UIGestureRecognizer and UITableViewCell issue 的可能重复项 @iosDev82 谢谢!但是这个Objective-c,我不知道如何阅读Objective-c代码:) 【参考方案1】:

将手势识别器添加到您的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!)
    

这应该可行。

【讨论】:

【参考方案2】:

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

func longpressed(sender: UILongPressGestureRecognizer) 

var state = sender.state

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

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



【讨论】:

以上是关于单元格中的 swift GestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewController 单元格中的索引超出范围 - swift

UITableView 单元格中的动态形状(Swift)

单个 UITableview 单元格中的多种字体大小 (Swift)

SWIFT:从自定义单元格中的 UIswitch 展开/折叠自定义单元格

Swift:自定义单元格中的 IBoutlets 为零

Swift - 将手势识别器添加到表格单元格中的对象