当我点击屏幕时,如何防止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()
}
}
答案 0 :(得分:0)
您似乎拥有UIButton
或UIGestureRecogniser
的全屏画面,触发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?