如何在 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