如何在点击屏幕时防止回退

How to prevent segue back upon tapping screen

当我点击屏幕时,如何防止 Xcode 执行转回到上一个视图 controller/screen。

当我点击视图的任意位置时 controller/screen 它会将我送回之前查看过的视图 controller/screen。

我已经在模拟器和真实 iPhone 上进行了测试,结果相同。此外,我已经通过删除 Xcode 中的所有 segues 来测试它,如果我点击任何地方它仍然会让我回到上一个屏幕。

[使用代码更新]

视图控制器 #1:

import UIKit

class FirstViewController: UIViewController {

    // Button
    @IBAction func btn(_ sender: Any) {
        performSegue(withIdentifier: "SecondView", sender: self)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

然后从 View Controller #1 添加了一个 segue 到 View Controller #2 - 模态呈现,标识符为 "SecondView"。

视图控制器 #2:

import UIKit

class SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

您似乎有全屏 UIButtonUIGestureRecogniser 触发 dismiss(animated: Bool) 或展开转场。

请分享您的代码。

我不知道你的详细代码,只提供一种方法,使用 EventTouch 或 UITapGestureRecognizer 可以做到,在 View Controller #2: EventTouch

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
       dismiss(animated: Bool)
}

UITapGestureRecognizer

func handleTap(sender: UITapGestureRecognizer) {
   if sender.state == .ended {
    // handling code
    dismiss(animated: Bool)
   }
}

希望能帮到你。

嗨,首先动画是如何发生的,我的意思是过渡效果,如果它是从上到下那么解散就是触发, 出于调试目的尝试查看交互启用为 false,post 结果为回复

我找到了问题的答案...

答案如下:

 private func removePartialCurlTap() {
  if let gestures = self.view.gestureRecognizers as? [UIGestureRecognizer] {
    for gesture in gestures {
      self.view.removeGestureRecognizer(gesture)
    }
  }
}

override func viewDidAppear(_ animated: Bool) {
  super.viewDidAppear(animated)
  removePartialCurlTap()
}

问题似乎是用于 Seque 的转换,特别是在使用 "Partial Curl" 时会遇到此问题。我猜这是 Xcode / iOS 中的一个错误,或者没有很好地记录,如果你使用那个特定的转换,你需要基本上删除 GestureRecognizer,这样用户就不会被发送回上一个屏幕,当他们简单地点击屏幕上的某人时。

归功于 Anton Rodzik for posting an answer to this here: How to disable auto segue back to main screen in Xcode?