gpt4 book ai didi

ios - iOS7中UINavigationController滑动边缘弹窗 Action 异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:16 26 4
gpt4 key购买 nike

我在 UINavigationController 中通过边缘滑动弹出 View Controller (VC) 时发现了一个看起来像 iOS7 的错误。

我设置如下 VC 层次结构:

UINagivationController
|
--- UIVewControllerR (root)
|
--- UIViewControllerA
|
--- UIViewControllerB

我尝试通过边缘滑动弹出 UIViewControllerB,并连续弹出 UIViewControllerA。它运作良好。但是,如果第一次滑动操作被取消然后重试弹出它,我发现了一个错误。弹出 UIViewControllerA 后,发现弹出 UIViewControllerA 后,UIViewControllerA 的导航栏项目仍然显示。

简而言之,UIViewControllerR 与 UIViewControllerA 的导航栏项目一起显示。

没有可能影响 UINavigationController 转换的代码。
这是 iOS7 上的错误吗?

最佳答案

我找到了解决这个问题的方法。

我所做的是在我的 UINagivationController 类中,设置一个名为 BOOL 的属性

@property (nonatomic, assign) BOOL interactivePopGestureComplete;

然后在 UINagivationController 的初始化中

self.interactivePopGestureComplete = YES;
if([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
[self.interactivePopGestureRecognizer addTarget:self action:@selector(defaultGestureAction:)];

和这样的 Action 方法:

- (void)defaultGestureAction:(UIGestureRecognizer *)sender
{
if(sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged)
self.interactivePopGestureComplete = NO;
else
self.interactivePopGestureComplete = YES;
}

并且在 viewWillAppear: 或 viewWillLayoutSubviews: 中(在存在此问题的 viewControllers 中),无论您在这两种方法中更新 navigationBarButtons 还是 navigationBar,只要检查是否

// Lets say our UINagivationController class name is NavigationCon
NavigationCon *navCon = (NavigationCon *)self.navigationController;
if(navCon.interactivePopGestureComplete)
{
// only then update navigationBar
}

关于ios - iOS7中UINavigationController滑动边缘弹窗 Action 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com