隐藏导航栏返回按钮以及键盘引发的UI问题

隐藏返回按钮

当是某个界面被push进来的时候,其导航栏左侧会自动显示返回按钮。

备注:项目中对于pop手势的扩展使用的是FDFullscreenPopGesture分类。

一般会想到如下三种解决办法

方法一

self.navigationItem.leftBarButtonItem = nil;

但是方法一并不能隐藏返回按钮。

方法二

 self.navigationItem.hidesBackButton = YES;

能隐藏但是存在问题:当你进行pop手势但又不退出界面时,被我们隐藏的返回按钮会重新显示出来,而且显示不完全。


隐藏导航栏返回按钮以及键盘引发的UI问题_第1张图片
Snip20170810_10.png

显示三个点的控件信息如下,其实就是返回按钮:

Snip20170810_11.png

方法三

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] initWithFrame:CGRectZero]];

这是最好的解决方法,即用一个视图创建leftBarButtonItem,可以是一个frame为CGRectZero或者自定义样式的视图。

关于界面消失键盘的回收问题

如果某个界面通过监听键盘的显示和隐藏来控制UISCrollView的frame,当你通过pop手势又不完全退出界面时(并没有回收键盘),可能会引发UI上面的bug。也就是整个UISCrollView像右偏移而且其宽度会突变,就像这样的:


隐藏导航栏返回按钮以及键盘引发的UI问题_第2张图片
IMG_0538.PNG
隐藏导航栏返回按钮以及键盘引发的UI问题_第3张图片
IMG_0539.PNG

在这个过程中打印UISCrollView的frame如下:

隐藏导航栏返回按钮以及键盘引发的UI问题_第4张图片
Snip20170810_12.png

不过我自己单独测试似乎没有遇到上面的问题,只是大家可以注意下这个点,即进行pop手势时是否需要回收键盘。

Stay hungry,Stay foolish!

你可能感兴趣的:(隐藏导航栏返回按钮以及键盘引发的UI问题)