美文网首页UI进价iOS开发指南iOS
通过手势欺骗实现Navigation全屏手势返回

通过手势欺骗实现Navigation全屏手势返回

作者: WELCommand | 来源:发表于2015-07-19 23:12 被阅读791次

这事其实挺无聊的。

过程也很是枯燥,只能作为单身狗的消遣。

我们知道,Navigation默认是有需要把手指放在屏幕边缘,才能够使返回动画生效。

从技术角度来讲,这是怎么实现的呢?

首先,只要愿意挖,你最终会找到UIScreenEdgePanGestureRecognizer这么个手势。并确定是这个手势来实现上述效果。

然后,你会分析这个手势。

在这,假设存在一段代码是“开始返回”,另一段代码是“返回中”。

通过直觉,UITouch是一种触发条件。(当然,直觉是马后炮,我猜到最后才猜对)

打印出UIScreenEdgePanGestureRecognizer所有的方法。你可能会注意到这两个方法 touchesBegan:withEvent:
touchesMoved:withEvent:

然后,通过method_exchangeImplementations,把这两个方法截取下,并且用touch的私有api “_locationInWindow ” 将一组touch参数平移到屏幕边缘。

成功。

另外,在navbar隐藏的情况下,返回动画会失效。怎么让他不失效呢?

UIScreenEdgePanGestureRecognizer的delegate是_UINavigationInteractiveTransition。

通过method_exchangeImplementations 可以发现,在隐藏bar的情况下 这个方法gestureRecognizer:shouldReceiveTouch: 会返回NO 。

使用method_exchangeImplementations ,让其永久返回YES。

game over  ,通关时间 5小时。代码在这代码 

最后,从产品的角度,我认为苹果的实现远远高于全屏返回。

相关文章

  • 通过手势欺骗实现Navigation全屏手势返回

    这事其实挺无聊的。 过程也很是枯燥,只能作为单身狗的消遣。 我们知道,Navigation默认是有需要把手指放在屏...

  • iOS 全屏返回

    iOS 全屏返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 手势返回

    iOS 手势返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS 右滑返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • BBGestureBack 手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS 右滑返回

    iOS 右滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回详解

    iOS 侧滑返回详解 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流A...

  • iOS 侧滑返回详解

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

网友评论

本文标题:通过手势欺骗实现Navigation全屏手势返回

本文链接:https://www.haomeiwen.com/subject/ecquqttx.html