gpt4 book ai didi

iPad:从屏幕上边框拖动手指时未调用 touchesBegan

转载 作者:行者123 更新时间:2023-12-01 08:09:22 25 4
gpt4 key购买 nike

我正在编写一个 ipad 应用程序,您可以用 1 或 2 个手指在屏幕上拖动。我使用 touchesBegan、touchesMoved 和 touchesEnded 方法来识别触摸。我为 View 启用了多点触控。

现在我发现了一种奇怪的行为。如果我将手指放在屏幕上边框之外并将其向下拖动到屏幕上,我将不会收到对 touchesBegan 或 touchesMoved 的调用。这不能为其他屏幕边框重现。

唯一可以重现的其他情况是当我使用横向且主页按钮位于左侧时。在本例中,屏幕上边框的行为相同。

有没有人知道这方面的信息或在测试时是否有同样的经历?

编辑:我做了一些额外的测试。如果我将手指放在该区域或从任何较低的屏幕位置向上滑动,状态栏通常所在的区域会非常好地接收 touchesBegan 或 touchesMoved。仅当我从完全高于屏幕边缘的位置向下滑动手指时,才无法识别输入。

编辑2:附加信息:- 我的应用程序使用 OpenGL View 。- 状态栏被隐藏。- 在所有方向上触摸(隐藏的)状态栏区域时,touchesBegan 被正确调用。

最佳答案

我相信潜在的问题是屏幕上的触敏层在可见屏幕上方延伸了几个像素,这意味着从技术上讲,从那里发起的触摸是在 UIViewController View 之外开始的。由于您的 UIViewController 只能看到源自其 View 的触摸,因此它不会看到这些触摸。因此,如果您的设备屏幕在可见像素上方一两个像素处被触摸,触摸将被发送到该屏幕外区域(可能是状态栏?)中存在的任何虚拟层。这会阻止您的 UIViewController 接收到任何触摸,因为滑动并非源自您的 UIViewController 的 View 区域。

要解决此问题,在 applicationDidLaunch 时,您可以将 UIWindow 的大小调整为(比如)每侧大 10 像素,并在其中创建一个中间 UIViewController“背景”层,以匹配窗口的扩展大小。然后将您的主界面 UIViewController View 设置为“背景” View 的 subview ,在所有边上插入 10 个像素以重新匹配物理屏幕尺寸。如果您的界面旋转,则每次都必须在后台 UIViewController 的 willAnimateRotationToInterfaceOrientation 方法中重新应用背景 View 的 10 像素放大。

最后,让后台 View Controller 中的 touchesBegan/Moved/Ended 方法将它们的触摸直接转发到主 UI View Controller 中的相应方法。瞧!

希望对您有所帮助,本

关于iPad:从屏幕上边框拖动手指时未调用 touchesBegan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187236/

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