向标签添加手势?
Posted
技术标签:
【中文标题】向标签添加手势?【英文标题】:Adding a gesture to a label? 【发布时间】:2018-09-25 08:58:27 【问题描述】:Swift 4 ios 11
尝试使用此代码向标签添加手势,它会触发,但会因无法识别的选择器而崩溃。
尝试使用和不使用@objc,也尝试使用@selector(ViewController.copyURL),尝试打开isUserInteractiveEnabled = true;没有工作
@IBOutlet weak var zeroURL: UILabel!
let press = UILongPressGestureRecognizer(target: zeroURL, action: #selector(copyURL))
view.addGestureRecognizer(press)
@objc func copyURL()
UIPasteboard.general.string = self.zeroURL.text
print("copied")
zeroURL.alpha = 0
UIView.animate(withDuration: 0.75, delay: 0.25, options: [.curveEaseOut], animations:
self.zeroURL.alpha = 1.0
) (status) in
// do nothing
【问题讨论】:
你的zeroURL
是什么?
【参考方案1】:
目标应该是自己,你需要将手势识别器添加到标签,而不是视图
let press = UILongPressGestureRecognizer(target: self, action: #selector(copyURL))
zeroURL.addGestureRecognizer(press)
在这里的第一行,您正在配置手势识别器,告诉它self.copyURL
是识别该手势时要使用的目标操作。第二行将手势添加到UILabel
【讨论】:
【参考方案2】:替换这个
let press = UILongPressGestureRecognizer(target: zeroURL, action: #selector(copyURL))
view.addGestureRecognizer(press)
与
let press = UILongPressGestureRecognizer(target: self, action: #selector(copyURL))
zeroURL.addGestureRecognizer(press)
作为目标应该包含选择器方法的实现
【讨论】:
【参考方案3】:将目标设为self
而不是zeroURL
,如下所示:
let press = UILongPressGestureRecognizer(target: self, action:#selector(copyURL))
zeroURL.addGestureRecognizer(press)
@objc func copyURL()
UIPasteboard.general.string = self.zeroURL.text
print("copied")
zeroURL.alpha = 0
UIView.animate(withDuration: 0.75, delay: 0.25, options: [.curveEaseOut], animations:
self.zeroURL.alpha = 1.0
) (status) in
// do nothing
编辑:在您的UILabel
上添加长按手势,但不在您的view
上,如下所示:
zeroURL.addGestureRecognizer(press)
【讨论】:
是的,这解决了它......但我现在到处长按。我只想长按 zeroURL。以上是关于向标签添加手势?的主要内容,如果未能解决你的问题,请参考以下文章
向 UIImageView 添加轻击手势以更改 UILabel?