【问题标题】:Add Swipe Gesture to all View controllers in the project将 Swipe Gesture 添加到项目中的所有 View 控制器
【发布时间】:2014-12-29 18:13:13
【问题描述】:

我有 50 个带有后退按钮的视图控制器。现在我需要为项目中的所有视图控制器添加从左到右的滑动手势。当触发滑动时,我需要为相应的视图控制器回调 btn clicked 事件。很难为每个视图控制器添加滑动手势。有没有其他方法可以通过对视图控制器的最小更改来做到这一点。 提前致谢。

问候, 巴拉特G

【问题讨论】:

  • 如何添加 50 个 ViewController。在UIScrollViewUIPageViewController 或其他任何地方?或者你想在滑动时集成 popviewController 功能。
  • 视图控制器使用导航控制器(push,pop)进行管理。每个后退按钮在其视图控制器中都有自己的实现。在向左滑动时,应调用相应的视图控制器返回 btn 单击事件。

标签: ios objective-c uiviewcontroller swipe-gesture


【解决方案1】:

这些其他人已经告诉你为什么你可能不需要这样做,但假设你这样做(不使用 UINavigationController || 支持 pre iOs7 ..),那么添加到所有这些的最简单的方法肯定是一个新的 UIViewController 子类,在 viewDidLoad 或类似中添加 swipeRecogniser,然后修改其他 50 个控制器中的每一个,以便它们都继承自这个(即抽象超类..)

在一个50左右的项目中,我总是在UIViewController之上有一个抽象超类,显然有很多代码可以共享

【讨论】:

  • 从超类中,如何调用子类返回按钮点击事件方法?
  • @bharathgangupalli 你看错了。超类将调用它自己的后退按钮事件处理程序实现,该处理程序可以为空。子类将覆盖它。
  • 是的,滑动可能会调用一个动作,例如-(void)swipeRight:(UIGestureRecogniser *)sender on self.但是你的具体子类可以用他们自己的实现来覆盖它..
  • 耶.. 知道了,杰夫。感谢您的解决方案。
【解决方案2】:

创建一个YourViewController 类并在 viewDidLoad 方法中实现您的 SwipeGesture 方法。

在您的 50 个视图控制器 .h 文件中:

@interface ViewController : YourViewController

让你所有的 50 个 viewController 都继承自你的 YourViewController

【讨论】:

  • 也许扩展会更好。因为您只能从一个类继承。使用您的解决方案,您将需要子类化 UIViewController、UITableViewController 等。因此,将方法添加到 UIViewController 的扩展。只需在您的 50 个 viewControllers viewDidLoad 中添加对此方法的调用。
  • 这几乎与上面的答案完全相同,大约十分钟前......
【解决方案3】:

如果后退按钮可见,它应该会自动工作。如果您显示的是 leftBarButtonItem 而不是后退按钮,则默认情况下不会出现该手势。此外,如果您使用的是 UINavigationBar 而不是 UINavigationController,您将看不到此功能。

如果您使用的是 UINavigationController 并且您的视图控制器的导航项包含 leftBarButtonItem,则仍然可以通过将委托附加到导航控制器的 interactivePopGestureRecognizer 来添加导航控制器从左向右滑动手势的功能。

注意:iOS 7 引入了“向后滑动”功能(我希望您正在开发 iOS 7 或更高版本的应用程序)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多