如何为 UINavigationController 启用全屏平移

Posted

技术标签:

【中文标题】如何为 UINavigationController 启用全屏平移【英文标题】:How to enable full screen Pan back for UINavigationController 【发布时间】:2016-02-16 08:32:29 【问题描述】:

ios7 开始,苹果提供了一种平移 UINavigationController 的方法,但只能通过从屏幕边缘滑动来完成。如何启用全屏平移后退手势?

【问题讨论】:

您也可以使用object directory 中的Screen Edge Pan Gesture Recognizer 来实现这一目标..!! @Sneha ScreenEdgePanGesture只能从边缘滑动,如果要从中间平移怎么处理? 对不起,我误会了,您可以使用简单的Swipe Gesture Recognizer... 【参考方案1】:

我真的花了很多时间试图解决这个问题,最后我找到了方法。我只是提出一个问题并自己回答以在这里分享解决方案。

请参考我的博客以获取更多详细信息enter link description here

演示代码:

#import "TestNavigationController.h"

@interface _UINavigationInteractiveTransition

@end

@interface UINavigationController(Custom)
@property (strong, nonatomic) _UINavigationInteractiveTransition * _cachedInteractionController;

@end

@implementation TestNavigationController

    UIPanGestureRecognizer *_p;


- (void)viewDidLoad 
    [super viewDidLoad];
    NSLog(@"%@", self.interactivePopGestureRecognizer
          );
    _p = [[UIPanGestureRecognizer alloc]initWithTarget:self._cachedInteractionController action:@selector(handleNavigationTransition:)];
    NSLog(@"%@", self._cachedInteractionController);
    [self.view addGestureRecognizer:_p];
    
@end

编辑说明: 这会暴露私有 API。

【讨论】:

我认为这会暴露私有 API

以上是关于如何为 UINavigationController 启用全屏平移的主要内容,如果未能解决你的问题,请参考以下文章

如何为下拉菜单制作 CSS 边框?

如何为 CAShapeLayer 路径和填充颜色设置动画

iPhone - 如何为图像着色?

如何为 RecyclerView 设置 onItemClickListener? [复制]

WCF - 如何为 NTLM 身份验证配置 netTcpBinding?

如何为 UIToolbar 上的按钮添加滚动?