【问题标题】:Disable swipe feature of ios app which moves it to previous screen禁用 ios 应用程序的滑动功能,将其移动到上一个屏幕
【发布时间】:2014-05-06 11:18:16
【问题描述】:

我认为这是 ios 中的操作系统级别功能,使用该功能用户只需将当前视图滑动到右侧即可返回上一个屏幕。它只需要触摸视图的左边缘并将其向右移动。您可以在下面的屏幕截图中看到它。

问题是它会导致登录用户仅通过从左到右滑动屏幕来注销,尽管登录屏幕上没有任何后退按钮。它严重影响了我的应用的整个功能。

有人知道如何在滑动时禁用此后退功能并将其限制为仅返回按钮吗?

【问题讨论】:

  • 不用评论@DarshanKunjadiya,你的回答已经通知他了
  • @ViruMax 感谢支持投票。

标签: ios objective-c


【解决方案1】:

在您的视图控制器中使用此代码。

斯威夫特 5

if navigationController?.responds(to: #selector(UINavigationController.interactivePopGestureRecognizer)) ?? false {
    navigationController?.interactivePopGestureRecognizer?.isEnabled = false
}

目标 C

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

希望这段代码对你有用。

【讨论】:

  • 这很好用,但让我感到有些遗憾的是,touchesBegan 事件没有在 ViewController 周围 ~15pt 边框内的控件上触发。任何不在 VC 边界上的东西都可以正常工作。有什么想法吗?
【解决方案2】:

SWIFT

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false

【讨论】:

  • 请添加一些解释,为什么您认为这是一个正确的解决方案。
  • 因为上面已经标记为正确答案,但是Darshan只写了objC的答案,我把Swift版本放在这里。现在我看到有人编辑了 Darshan 的答案并添加了 Swift 5 版本。
【解决方案3】:

我们可以在 iOS 7 及更高版本上禁用或启用。

UIKit 框架中

@available(iOS 7.0, *)
open var interactivePopGestureRecognizer: UIGestureRecognizer? { get }

所以,您只需为 navigationController 设置 true 或 false 即可禁用手势。

一旦你启用或禁用这将影响每个屏幕的交互手势。

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多