相关疑难解决方法(0)

使用(自定义,交互式)视图控制器显示和解除处理滚动视图

我一直在尝试定制交互视图控制器演示和解雇(使用的组合UIPresentationController,UIPercentDrivenInteractiveTransition,UIViewControllerAnimatedTransitioning,和UIViewControllerTransitioningDelegate),并大多得到的东西我需要运作良好.

但是,有一个常见的场景我还没有在我阅读的任何教程或文档中找到解决,引出了以下问题:

...

当被解除的视图包含UIScrollView(即UITableView,UICollectionView,WKWebView等)时,通过平移手势处理自定义交互式视图控制器解除的正确方法是什么?

...

基本上,我想要的是以下内容:

  1. 通过平移它们可以交互式地禁止视图控制器.这是许多应用程序中常见的UX.

  2. 如果被解除的视图控制器包含(垂直滚动)滚动视图,则向下平移滚动该视图按预期直到用户到达顶部,之后滚动停止并且发生泛消除.

  3. 否则,滚动视图应该正常运行.

我知道这在技术上是可行的 - 我已经在其他应用程序中看到了它,例如Overcast和Apple自己的音乐应用程序 - 但是我找不到协调我的平移手势与滚动的行为的关键视图(一个或多个).

我自己的大多数尝试都集中在试图有条件地启用/禁用contentOffset.y滚动视图(或其相关的平移手势识别器)基于其滚动时让视图控制器解雇的平移手势识别器从那里接管,但这已经充满了问题和我担心我会过度思考它.

我觉得秘密主要在于以下平移手势识别器委托方法:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
   // ...
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个简化的示例项目,该项目应该更清楚地演示场景.任何代码建议都非常欢迎!

https://github.com/Darchmare/SlidePanel-iOS

uiscrollview uiviewcontroller ios uipangesturerecognizer swift

14
推荐指数
1
解决办法
759
查看次数