作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
是否可以在 UITextView 上实现长按手势?基本上,如果用户在 TextView 上点击一次,我希望他/她能够编辑文本。但是,如果他/她点击并按住 TextView (假设两秒钟),将执行一个操作吗?如果答案是肯定的,请告诉我如何实现这一点?
根据 kchromik 的回答,以下是我的问题的解决方案:
(1) 第一步是在 ViewController 类开始之前定义以下扩展:
extension ViewController: UIGestureRecognizerDelegate { func gestureRecognizer (_ gestureRecognizer: UIGestureRecognizer, shouldRecognizerSimultaneouslyWithotherGestureRecognizer: UIGestureRecognizer) -> Bool { return true}}
(2) 第二步是将 UITextView Outlet 从 Main Storyboard 链接到 swift 代码文件:
@IBOutlet weak var testTextView: UITextView!
(3) 第三步是从对象库中将 GestureRecognizer 拖放到要在其上实现 Longpress 手势识别器的 UITextView 之上。
(4) 第四步是在viewDidLoad()下添加如下代码{
let uilpgr = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longpress(gestureRecognizer:)))
uilpgr.minimumPressDuration = 2
testTextView.addGestureRecognizer(uilpgr)
uiplgr.delegate = self
(5) 最后一步是定义与之前定义的 Longpress Gesture Recognizer 一起使用的函数:
func longpress(gestureRecognizer: UIGestureRecognizer) {
print("Long tap") // Execute what you want to do
}
最佳答案
默认情况下,UILabel
禁用用户交互。在您的 viewDidLoad
中尝试 testLabel.isUserInteractionEnabled = true
或在 Storyboard 中启用它:
更新
如果您的 UIView
有自己的手势识别器,您可以实现以下委托(delegate):
extension ViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
并且不要忘记设置 uilpgr.delegate = self
关于ios - 如何在 UITextView 上实现长按手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664101/
我是一名优秀的程序员,十分优秀!