我有一个UILongPressGestureRecognizer,一段时间后似乎没有反应。 这似乎与时间流逝有关,并且可能与应用程序失去活动状态并进入后台有关。

第一次重新打开应用程序并尝试长按或滑动时,经常会遇到问题,但均无济于事。 如果我转到另一个视图控制器,然后返回,则重新加载会导致手势识别器再次开始工作!

  let longpress = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPressGestureRecognized(_:)))
  mainView.addGestureRecognizer(longpress)

关于处理手势识别器的任何想法都变得像这样无响应?

#1楼 票数:0

请尝试以下方法。

  1. 使longpress成为全局变量
  2. viewWillAppear添加手势(如果不存在)
  3. viewWillAppearUIApplicationWillEnterForeground添加通知
  4. 删除viewWillDisappear的手势和通知

像这样

var longpress: UILongPressGestureRecognizer!

override viewDidLoad() {
    super.viewDidLoad
    longpress = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPressGestureRecognized(_:)))
}

override viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    checkGestureAvailability()
    NotificationCenter.default.addObserver(self, selector: #selector(checkGestureAvailability), name: Notification.Name.UIApplicationWillEnterForeground, object: nil)
}

override viewWillDisappear(_ animated: Bool) {
    if mainView.gestureRecognizers.contains(longpress) {
        mainView.removeGestureRecognizer(longpress)
    }
    NotificationCenter.default.removeObserver(self, name: Notification.Name.UIApplicationWillEnterForeground, object: nil)
    super.viewWillDisappear(animated)
}

func checkGestureAvailability() {
    if !mainView.gestureRecognizers.contains(longpress) {
        mainView.addGestureRecognizer(longpress)
    }
}

  ask by Dave G translate from so

未解决问题?本站智能推荐:

1回复

Swift:为什么 Tap Gesture Recognizer 每次都不起作用?

我有奇怪的问题。 我有一个基本的点击手势识别器添加到我的子视图中,但它只在它喜欢的时候工作。 有时它适用于第二次点击,有时适用于第三次甚至更多次点击。 但是当我将print("whatever")到由手势识别器调用的函数时,它总是在我第一次单击子视图时起作用。 我该如何解决? 在这两个例子上出现
3回复

向uiimage添加手势识别器

我有图像滑块..我按照本教程进行操作: 使用UIPageControl Swift 4 XCode 9创建水平分页UIScrollView,它工作正常。 现在我想在这些图像上添加手势识别器..我试图这样做: 但它不起作用,什么也不会发生。 如何解决这个问题?
1回复

UITableViewCells的手势识别器

我有一个使用核心数据填充的表格视图 我正在尝试将所有表视图单元格中的数据传递给手势识别器的功能,因此当一个单元格被滑过时,识别器将识别出该数据并将变量发送到手势识别器的功能,以便我可以使用它们。 上面只是将手势识别器添加到每个单独的单元格。 上面是擦除某个单元格时的实际功
1回复

未调用手势识别器

我设置了一个手势识别器,用于在用户在文本字段外点击时关闭键盘。 不调用DismissKeyboard函数。 我设置的观察者是否错误或这是另一个问题? 另外,这是一个正在点击的表格视图。 代码节选 我在dismissKeyboard上设置了一个断点,但是它甚至没有被调用。
1回复

点击手势识别器

是否可以检查轻击手势是否在对象的特定范围内发生? 例如,我有一个带有三个三角形截面的自定义绘制视图。 我想知道从轻击手势识别器发送的手势是否出现在三角形1、2或3内。
1回复

UIView中用于UIImageView的手势识别器

我在超级视图中添加了UIImageView ,然后添加了所需的手势并可以正常工作,但是在另一个UIView执行相同操作时(在UIView添加UIImageView并添加手势)却无法正常工作,我认为这与委托有关,但我无法弄清楚。 请在Swift中编写代码。
1回复

绘制视图,但未检测到手势识别器

我有一个UIScrollView ,其中有一个UIView作为子视图,而FooView包含我的所有FooView ,也就是UIView 。 每个FooView都有一个手势识别器。 对于我的滚动视图中的第一个FooView ,检测到的手势就很好(这意味着选择器已正确触发),但是所有后续FooV
4回复

同时处理两个手势识别器

问题很简单:我有一个ViewController ,上面有一个GestureRecognizer : 在这个ViewController我还有一个class WhishlistTableViewController: UITableViewController在它上面我有“滑动到删除”功能: