如何在点击屏幕时防止回退
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()
}
}
您似乎有全屏 UIButton
或 UIGestureRecogniser
触发 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?
当我点击屏幕时,如何防止 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()
}
}
您似乎有全屏 UIButton
或 UIGestureRecogniser
触发 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?