2

是否可以在 UITextView 上实现长按手势?基本上,如果用户在文本视图上点击一次,我希望他/她能够编辑文本。但是,如果他/她点击并按住文本视图(比如说两秒钟),会执行一个动作吗?如果答案是肯定的,请告诉我如何实现这一目标?

以下是根据 kchromik 的 asnwer 解决我的问题的方法:

(1) 第一步是在 ViewController 类开始之前定义以下扩展:

extension ViewController: UIGestureRecognizerDelegate { func gestureRecognizer (_ gestureRecognizer: UIGestureRecognizer, shouldRecognizerSimultaneouslyWithotherGestureRecognizer: UIGestureRecognizer) -> Bool { return true}}

(2) 第二步是将主故事板中的 UITextView Outlet 链接到 swift 代码文件:

@IBOutlet weak var testTextView: UITextView!

(3) 第三步是从对象库中将 GestureRecognizer 拖放到要在其上实现 Longpress Gesture Recognizer 的 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

}
4

1 回答 1

-1

默认情况下 aUILabel已禁用用户交互。testLabel.isUserInteractionEnabled = trueviewDidLoad情节提要中尝试或启用它:

在此处输入图像描述

更新

如果您UIView有自己的手势识别器,则可以实现以下委托:

extension ViewController: UIGestureRecognizerDelegate {
  func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
  }
}

而且你不要忘记设置uilpgr.delegate = self

于 2017-08-13T20:23:10.267 回答