iPad的景观麻烦屏幕上的左侧部分检测触摸(iPad Landscape trouble detec

2019-10-30 12:19发布

我工作的一个景观的iPhone应用程序。 它运行在iPhone上的罚款,但是当我在iPad或iPad的模拟器上运行它,它有一个处理,在X方向超过320触摸的问题。

很多超越320 UIButtons将突出按下时,但不会做他们的行动。

当我加入这个我superviews:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
 UITouch *touch = [touches anyObject];

 CGPoint touchLocation = [touch locationInView:self];
 NSLog(@"bounds: %1.2f %1.2f  touch: %1.2f %1.2f",self.bounds.size.width,self.bounds.size.height,touchLocation.x,touchLocation.y);     
}

它永远不会输出的x值大于320。越大屏幕的任何部分压大于320给出的320对于x的输出。

该UIViews都是编程,没有UIViewControllers完成。 我已经设定的plist景观启动它,并在我的applicationDidFinishLaunching旋转与此观点:

window.transform = CGAffineTransformMakeRotation((M_PI / 2.0));
window.bounds = CGRectMake(0, 0, 480, 320); 
window.center = CGPointMake(160.0f, 240.0f);
[window makeKeyAndVisible];

任何帮助表示赞赏。

Answer 1:

我有一个类似的问题,但我创造一切程序窗口,查看和ViewController(因为它是使用OpenGL ES游戏)。

问题是,我最初创建的窗口具有相同矩形的视图。 为了解决它只是让这样的窗口:

// Always create the window in Portrait mode
mpWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

和的viewController(谁创建的视图):

mpController = [[OViewController alloc] initWithFrame: CGRectMake(mPosX, mPosY, mWidth, mHeight)];
// After this line the view will rotate to landscape
[mpWindow addSubview:mpController.view];

希望这可以帮助!



Answer 2:

你的一个父母的观点或窗口有不正确的帧。

由于触摸从窗口评估向上到您的视图触摸是否您的任何意见的父母外,将停止。

你可以用类似的代码进行调试:

UIView *parent = self ;
while (parent = [parent superview]) NSLog("parent: %@",NSStringFromCGRect(parent.frame));

这将打印在你的框架层次结构框架...看看如果一个人有320像素的宽度



文章来源: iPad Landscape trouble detecting touches on lefthand portion of screen