标签: interactivepopgesture

使用interactivePopGestureRecognizer导航栏标题错误

进场时,我UINavigationBar在应用程序中的标题出现了一个奇怪的问题interactivePopGestureRecognizer.我制作了一个演示应用来展示这个bug.

建立:

  • rootViewController是一个UINavigationController.
  • FirstViewController 隐藏了导航栏,并且 interactivePopGestureRecognizer.enabled = NO;
  • Second并且ThirdViewController可以看到导航栏并启用了popgesture.

错误:

使用popgesture从第二个视图返回到第一个视图时会发生错误.如果您中途拉出第二个视图然后返回第二个视图,导航标题将显示"第二个视图"(如预期的那样).但是当您转到第三个视图时,标题将不会更改为"第三个视图".然后单击第三个视图的后退按钮,导航栏将变得混乱.

请查看我的演示应用程序.任何帮助解释为什么会发生这个错误将不胜感激.谢谢!

uinavigationbar ios interactivepopgesture

21
推荐指数
2
解决办法
7133
查看次数

InteractivePopGestureRecognizer导致应用程序冻结

在我的应用中,我有不同的控制器.当我将controller1推到导航控制器并向后滑动时,一切正常.但是,如果我推动导航控制器1,并进入controller1推控制器2并尝试向后滑动,我得到一个冻结的应用程序.如果通过后退按钮返回一切正常.

我怎么能抓住这个问题?

objective-c ios interactivepopgesture

18
推荐指数
3
解决办法
8799
查看次数

_adjustContentOffsetIfNecessary - UIScrollView自动滚动到顶部

在iOS 7.我有导航控制器,我在堆栈顶部推送一个新的VC.

新的VC有一个UIScrollView,它填充VC的根视图并垂直滚动.如果我向下滚动一点点,然后尝试使用"刷卡回去" /"刷卡流行"的姿态,垂直滚动查看第一滚动到顶部,然后interactivePopGesture承认,我可以拖上顶VC向左和向右堆叠.

为什么会这样?我希望防止我的滚动视图在识别"滑动返回"手势之前自动滚动到顶部.我该怎么做呢?

更新#1:

当我创建一个新的xcode项目时,我似乎无法重现这个错误,所以在原始项目中我肯定是错误的.当我找到原因时会更新.

更新#2:

当识别interactivePopGesture时,setContentOffset在我的垂直滚动视图上调用方法.在调试时,我看到setContentOffset是从中调用的UIScrollViewInternal _adjustContentOffsetIfNecessary.

更新#3:

在以下场景中会出现同样的问题:我在垂直UIScrollView中有UITextFields.按下某个UITextField时,会出现一个键盘.当我想以交互方式关闭键盘时(通过在键盘上滚动滚动视图),在我释放拖动后,会出现故障.UIScrollView的内容偏移暂时设置为零,然后设置回原始内容偏移并继续动画.这个不需要的设置contentOffset也被调用UIScrollViewInternal _adjustContentOffsetIfNecessary.

我继续使用我自己的UIScrollView子类在两个场景中替换了UIScrollView.在该子类中,我将私有方法重写-(void) _adjustContentOffsetIfNecessary为空void方法.我的两个问题都被消除了,我找不到任何负面后果.这不是一个解决方案,我不会使用这种方法,因为我不知道我到底做了什么.

uiscrollview ios7 interactivepopgesture

9
推荐指数
1
解决办法
1881
查看次数

当交互式弹出手势发生时,搜索栏会消失

我正在添加这样的搜索控制器:

        viewController.navigationItem.searchController = searchController
        viewController.navigationItem.hidesSearchBarWhenScrolling = false
        viewController.definesPresentationContext = true
        searchController.dimsBackgroundDuringPresentation = false

        searchBarContainer.translatesAutoresizingMaskIntoConstraints = false
        searchBarContainer.heightAnchor.constraint(equalToConstant: 0).isActive = true
Run Code Online (Sandbox Code Playgroud)

当尝试向右滑动以弹出当前viewController(此处激活交互式pop手势)但停留在同一个控制器上时,搜索栏就会消失.

viewController.navigationItem.searchController
Run Code Online (Sandbox Code Playgroud)

保持添加搜索控制器,但它不可见.

interactivepopgesture swift uisearchcontroller ios11

6
推荐指数
1
解决办法
267
查看次数

带有可见导航栏的视图控制器弹出带有隐藏导航栏的视图控制器时带有interactivePopGestureRecognizer的黑色区域

我有这个ViewController#1,它是导航控制器的根视图控制器并具有

self.navigationController.navigationBarHidden = YES;
Run Code Online (Sandbox Code Playgroud)

ViewController#1告诉它的导航控制器推送ViewController#2,它有

self.navigationController.navigationBarHidden = NO;
Run Code Online (Sandbox Code Playgroud)

当我想通过从屏幕左侧滑动从ViewController#2返回到ViewController#1时,我看到我的视图作为我附加的屏幕截图.当我向右移动手指时捕捉到这一点,因此当我向右滑动时,右上方的黑色区域变得越来越小,直到ViewController#1覆盖了所有屏幕区域.

我猜这是由两个视图控制器之间的隐藏/可见导航栏差异引起的.

我想知道是否有可能摆脱这个黑色区域.

在此输入图像描述

iphone uinavigationcontroller ios interactivepopgesture

3
推荐指数
1
解决办法
825
查看次数