gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:52:57 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,并返回 NO 如果传入的手势识别器是 UIPanGestureRecognizer

事实证明,我的设置 #3 运行良好。这允许用户在绘图 Canvas 之外的任何地方向下滑动以关闭(如导航栏),同时允许用户在不移动工作表的情况下进行绘图,正如人们所期望的那样。

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

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

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