- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 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/
我用 cocos2d 制作了我的第一个应用程序,所以我在这里很新 我的第一个问题: 我不会让物体(船)跟随我的手指。 -(void) ccTouchMoved:(UITouch *)touch wit
如果某人将右手压在扫描仪的玻璃上进行扫描,结果将如下所示: (没有橙色和白色注释)。我们如何确定某人的 2D:4D ratio从他们的手的图像? 最佳答案 您已经标记了这个很棒的 opencv - 我
我的 View Controller 中有几个 UIScrollView。我想覆盖一个通过 UIPanGestureRecognizer 捕获 2 根手指滑动的 View ,它不会记录 UIScrol
现在这真是令人困惑...在不离开页面的情况下更新 mysql 数据库...我有 3 位代码。 head 标签中的 javascript、body 中的操作按钮以及要在另一个页面上执行的代码。以下是三个
我有这段代码是从 Style clipboard in flutter 得到的 showMenu( context: context, // TODO: Positio
我是一名优秀的程序员,十分优秀!