隐藏返回按钮
当是某个界面被push进来的时候,其导航栏左侧会自动显示返回按钮。
备注:项目中对于pop手势的扩展使用的是FDFullscreenPopGesture分类。
一般会想到如下三种解决办法
方法一
self.navigationItem.leftBarButtonItem = nil;
但是方法一并不能隐藏返回按钮。
方法二
self.navigationItem.hidesBackButton = YES;
能隐藏但是存在问题:当你进行pop手势但又不退出界面时,被我们隐藏的返回按钮会重新显示出来,而且显示不完全。

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

方法三
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] initWithFrame:CGRectZero]];
这是最好的解决方法,即用一个视图创建leftBarButtonItem,可以是一个frame为CGRectZero或者自定义样式的视图。
关于界面消失键盘的回收问题
如果某个界面通过监听键盘的显示和隐藏来控制UISCrollView的frame,当你通过pop手势又不完全退出界面时(并没有回收键盘),可能会引发UI上面的bug。也就是整个UISCrollView像右偏移而且其宽度会突变,就像这样的:
在这个过程中打印UISCrollView的frame如下:

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