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

时间:2018-10-15 19:18:33

标签: ios swift xcode ios-simulator

当我点击屏幕时,如何防止Xcode将序列执行回之前的视图控制器/屏幕。

当我在视图控制器/屏幕上的任意位置单击时,它会将我发送回先前查看的视图控制器/屏幕。

我已经在模拟器和真实的iPhone上进行了测试,它的功能相同。此外,我已经通过删除Xcode中的所有测试来对此进行了测试,如果我单击任意位置,它仍会将我带回到上一屏幕。

[使用代码更新]

View Controller#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向View Controller#2添加了一个segue-一种模态为“ SecondView”的标识符的礼物。

View Controller#2:

import UIKit

class SecondViewController: UIViewController {

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

4 个答案:

答案 0 :(得分:0)

您似乎拥有UIButtonUIGestureRecogniser的全屏画面,触发dismiss(animated: Bool)或放松的搜寻。

请分享您的代码。

答案 1 :(得分:0)

我不知道您的详细代码,仅提供一种方法,使用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)
   }
}

希望可以帮助您。

答案 2 :(得分:0)

首先,动画是如何发生的,我是指过渡效果,如果它是从上到下的,则解雇是射击, 出于调试目的,请尝试查看交互功能是否为false并将结果发布为回复

答案 3 :(得分:0)

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

这是答案:

 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使用的过渡,尤其是在使用“部分卷曲”时,您会遇到此问题。我猜这是Xcode / iOS中的错误,或者没有被很好地记录下来,如果您使用该特定转换,则需要从根本上删除GestureRecognizer,这样当用户在其上单击某人时,就不会将其发送回上一个屏幕。屏幕。

贷记Anton Rodzik以便在此处发布对此的答案:How to disable auto segue back to main screen in Xcode?