gpt4 book ai didi

ios - 禁用手势下拉表单/页面表模式呈现

转载 作者:行者123 更新时间:2023-11-29 05:25:00 25 4
gpt4 key购买 nike

在 iOS 13 中,使用表单和页面样式的模式演示可以通过向下平移手势来关闭。这在我的一张表单中是有问题的,因为用户绘制到这个框中会干扰手势。它将屏幕向下拉,而不是绘制垂直线。

如何在以工作表形式呈现的模态视图 Controller 中禁用垂直滑动以消除手势?

设置 isModalInPresentation = true 仍然允许下拉工作表,只是不会关闭。

最佳答案

一般来说,您不应尝试禁用滑动关闭功能,因为用户希望所有表单/页面工作表在所有应用程序中表现相同。相反,您可能需要考虑使用全屏演示样式。如果您确实想使用无法通过滑动关闭的工作表,请设置 isModalInPresentation = true,但请注意,这仍然允许垂直向下拉工作表,并且在释放时它将弹回触摸。查看UIAdaptivePresentationControllerDelegate当用户尝试通过滑动等操作将其关闭时,文档会使用react。

如果您遇到应用的手势或触摸处理受到滑动关闭功能影响的情况,我确实收到了 Apple 工程师关于如何解决该问题的一些建议。

如果您可以阻止系统的平移手势识别器启动,这将阻止手势消除。有几种方法可以做到这一点:

  1. 如果您的 Canvas 绘制是使用手势识别器完成的,例如您自己的 UIGestureRecognizer 子类,请在工作表的关闭手势之前进入 began 阶段。如果您的识别速度与 UIPanGestureRecognizer 一样快,您就会获胜,并且工作表的关闭手势将被颠覆。

  2. 如果您的 Canvas 绘制是使用手势识别器完成的,请使用 -shouldBeRequiredToFailByGestureRecognizer: (或相关的委托(delegate)方法)设置动态失败要求,其中返回 NO 如果传入的手势识别器是 UIPanGestureRecognizer

  3. 如果您的 Canvas 绘制是通过手动触摸处理完成的(例如 touchesBegan:),请在触摸处理 View 上覆盖 -gestureRecognizerShouldBegin 并返回 如果传入的手势识别器是 UIPanGestureRecognizer,则为 NO

事实证明,我的设置 #3 效果非常好。这允许用户向下滑动绘图 Canvas 之外的任何位置来关闭(如导航栏),同时允许用户在不移动纸张的情况下进行绘图,正如人们所期望的那样。

我不建议尝试找到手势来禁用它,因为它似乎相当动态,并且可以在不同尺寸类别之间切换时自行重新启用,并且这可能在未来的版本中发生变化。

关于ios - 禁用手势下拉表单/页面表模式呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248978/

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