如何在 UITextView 上实现长按手势
How to implement a Longpress Gesture on a UITextView
是否可以在 UITextView 上实现长按手势?基本上,如果用户在文本视图上点击一次,我希望 him/her 能够编辑文本。但是,如果 he/she 点击并按住文本视图(假设两秒钟),将执行一个操作?如果答案是肯定的,请告诉我如何实现这一点?
根据 kchromik 的 asnwer,以下是我的问题的解决方案:
(1) 第一步是在 ViewController Class 开始之前定义以下扩展名:
extension ViewController: UIGestureRecognizerDelegate { func gestureRecognizer (_ gestureRecognizer: UIGestureRecognizer, shouldRecognizerSimultaneouslyWithotherGestureRecognizer: UIGestureRecognizer) -> Bool { return true}}
(2) 第二步是 link 从 Main Storyboard 到 swift 代码文件的 UITextView Outlet:
@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 手势识别器一起使用的函数:
func longpress(gestureRecognizer: UIGestureRecognizer) {
print("Long tap") // Execute what you want to do
}
默认情况下,UILabel
已禁用用户交互。在您的 viewDidLoad
中尝试 testLabel.isUserInteractionEnabled = true
或在故事板中启用它:
更新
如果您UIView
有自己的手势识别器,您可以实现以下委托:
extension ViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
而且你不要忘记设置 uilpgr.delegate = self
是否可以在 UITextView 上实现长按手势?基本上,如果用户在文本视图上点击一次,我希望 him/her 能够编辑文本。但是,如果 he/she 点击并按住文本视图(假设两秒钟),将执行一个操作?如果答案是肯定的,请告诉我如何实现这一点?
根据 kchromik 的 asnwer,以下是我的问题的解决方案:
(1) 第一步是在 ViewController Class 开始之前定义以下扩展名:
extension ViewController: UIGestureRecognizerDelegate { func gestureRecognizer (_ gestureRecognizer: UIGestureRecognizer, shouldRecognizerSimultaneouslyWithotherGestureRecognizer: UIGestureRecognizer) -> Bool { return true}}
(2) 第二步是 link 从 Main Storyboard 到 swift 代码文件的 UITextView Outlet:
@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 手势识别器一起使用的函数:
func longpress(gestureRecognizer: UIGestureRecognizer) {
print("Long tap") // Execute what you want to do
}
默认情况下,UILabel
已禁用用户交互。在您的 viewDidLoad
中尝试 testLabel.isUserInteractionEnabled = true
或在故事板中启用它:
更新
如果您UIView
有自己的手势识别器,您可以实现以下委托:
extension ViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
而且你不要忘记设置 uilpgr.delegate = self