iOS7新特性--左侧滑屏的坑

来源:互联网 发布:u3d java 编辑:程序博客网 时间:2024/05/08 01:49

iOS7中新增了许多特性,其中有一项新特性--左侧滑屏(从屏幕左侧边缘向右侧滑动时会调用popViewController这个方法,和点击了后退按钮一样的效果),虽说这个新特性的确增加了新奇的用户体验,但是这其中也是有一个比较坑爹的BUG,就是左侧滑屏会影响按钮的点击事件。

如果你在靠近屏幕左侧一定距离内构造一个按钮的话,你就会发现按钮无法点击。因为按钮的点击事件被“左侧滑屏”这个系统机制截胡了,左侧滑屏的机制抢先响应了点击事件,导致按钮无法获取到点击事件。这里我找到两个解决方法。

方法一:关闭左侧滑屏机制。

重载viewWillAppear:animated方法,将左侧滑屏机制关闭,如下;

- (void) viewWillAppear:(BOOL)animated{    [super viewWillAppear:animated];    [self.navigationController setNavigationBarHidden:NO];    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {         self.navigationController.interactivePopGestureRecognizer.enabled = NO;    }}

然后在viewWillDisappear:animated方法中,将左侧滑屏恢复,

- (void)viewDidDisappear:(BOOL)animated{    [super viewDidDisappear:animated];    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {        self.navigationController.interactivePopGestureRecognizer.enabled = YES;    }}

要注意的是关闭左侧滑屏机制的代码必须写在viewWillAppear:animated或者viewDidAppear:animated方法,因为在init方法和viewDidLoad方法时self.navigationController还没有被上一级的ViewController赋值,是nil。这时对navigationController的操作是无效的。

方法二:使用UITapGestureRecognizer代替按钮的点击事件

将按钮的target事件取消,新建UITapGestureRecognizer来处理按钮的响应事件的方法,然后将tapGesture添加到按钮上。

以上两种方法其实都不太好。方法一取消左侧滑屏功能,因为关闭了系统的原生功能,这是APPLE不推荐的。方法二会导致按钮没有点击按下的效果。不过目前我只找到这两种方法就只会先将就着用了。

0 0
原创粉丝点击