ccl*_*ogg 6 iphone bounds ipad touches touch-event
几乎没有关于此的信息,所以这是我的问题:
我正在努力让2名玩家坐在彼此的ipad游戏对面,对面的玩家很难点击按钮......因为看起来Apple会根据设备方向自动移动触控(这对于经常使用或主要玩家来说非常棒).有没有办法重置它或告诉ipad不这样做?(顺便说一下iPhone也这样做)
这就是我所发现的: 鉴于这种明显的不一致性,我决定通过打开移动部件的"界限"来欺骗它,以便用户有一个区域可以击中部件的区域.总的来说,用户似乎低于对象而不是高于对象 - 所以不要注意iOS引起的变化.
因此,如果没有简单的方法来阻止偏移,那么唯一的解决办法就是为相对的玩家移动每个uiview(或子类)的界限吗?或者这是否正确?
任何答案都赞赏.
编辑:天哪,你们我终于找到了办法!我创建了 UIView 的子类,并让我的游戏视图(其中包含所有 UIScrollViews、UIButtons 等)使用该子类。这是我添加到子类中的唯一代码:
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
CGPoint touchSpot = point;
if (![[[UIDevice currentDevice] model] isEqualToString:@"iPad Simulator"] && touchSpot.y < 512)
{
touchSpot = CGPointMake(touchSpot.x, touchSpot.y+10);
}
UIView *hitView = [super hitTest:touchSpot withEvent:event];
if (hitView == self)
return self; // you can return nil here if you want touches to go through this view (ie transparent space in a HUD overlay or w/e)
return hitView;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,效果很好……坐在另一端的人有良好的触摸响应,就像“主”侧的玩家一样。不过,请注意在此视图之上呈现视图...一切都将通过该方法进行...
旧的解决方案(在我发现之前^):
好吧,现在我的解决方案是子类化 uigesturerecognizer,转发任何触摸(即对识别器没有限制),然后将其添加到我的游戏视图中。然后,响应任何触摸的方法仅在状态为 Ended 时运行,如果是,则它会继续循环遍历每个子视图(不多)以查看触摸是否与子视图相交。同样,对于相反的玩家,它会比较稍微偏移的矩形(对于每个子视图)。
我会看看是否能找到更有效的方法...但到目前为止还可以。
我还可以将我的游戏视图设为 uiview 子类并覆盖 Touchbegan/移动/结束,但我已经将其全部放置出来,所以我使用了识别器(因此不必子类化 uiview)。
| 归档时间: |
|
| 查看次数: |
1708 次 |
| 最近记录: |