单元格中的 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)