Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 仅在320x480区域检测到iPad touch_Iphone_Objective C_Cocoa Touch_Uikit_Ipad - Fatal编程技术网

Iphone 仅在320x480区域检测到iPad touch

Iphone 仅在320x480区域检测到iPad touch,iphone,objective-c,cocoa-touch,uikit,ipad,Iphone,Objective C,Cocoa Touch,Uikit,Ipad,我正在升级iPhone应用程序,到目前为止一切都进展顺利(设法调整了大多数表单的屏幕显示大小)。然而,我无法解决一个问题——触摸只能在旧的320x480区域中检测到。有什么办法可以解决吗 谢谢 编辑:以下是用于获取superview边界的代码执行时的结果: CGFloat wdth = self.view.superview.bounds.size.width; NSLog(@"%d", wdth); CGFloat hgth = self.view.superview.bounds.size.

我正在升级iPhone应用程序,到目前为止一切都进展顺利(设法调整了大多数表单的屏幕显示大小)。然而,我无法解决一个问题——触摸只能在旧的320x480区域中检测到。有什么办法可以解决吗

谢谢

编辑:以下是用于获取superview边界的代码执行时的结果:

CGFloat wdth = self.view.superview.bounds.size.width; NSLog(@"%d", wdth); CGFloat hgth = self.view.superview.bounds.size.height; NSLog(@"%d", hgth); CGFloat wdth=self.view.superview.bounds.size.width; NSLog(@“%d”,wdth); CGFloat hgth=self.view.superview.bounds.size.height; NSLog(@“%d”,hgth); 结果:

2010-04-16 14:25:36.268 xxx[14871:207] 0 2010-04-16 14:25:36.269 xxx[14871:207] 1073741824 2010-04-16 14:25:36.268 xxx[14871:207]0 2010-04-16 14:25:36.269xxx[14871:207]1073741824 (%f)的结果:

2010-04-16 14:37:26.048 xxx[15053:207]-1.998374 2010-04-16 14:37:26.049 xxx[15053:207]0.000000 (%g)的结果:

2010-04-16 14:37:41.113 xxx[15084:207]-1.99837 2010-04-16 14:37:41.115 xxx[15084:207]9.48221e-38
当容器视图设置得太小时,我见过类似的行为。子视图将显示良好,但触摸不会触发,因为触摸发生在superview之外。

在您的AppDelegate中:

- (void)applicationDidFinishLaunching:(UIApplication *)application { // stupid Apple... CGRect rect = [[UIScreen mainScreen] bounds]; [window setFrame:rect]; // now, display your app [window addSubview:rootController.view]; [window makeKeyAndVisible]; } -(void)ApplicationIDFinishLaunching:(UIApplication*)应用程序{ //愚蠢的苹果。。。 CGRect rect=[[UIScreen mainScreen]边界]; [窗口设置帧:rect]; //现在,显示你的应用程序 [窗口添加子视图:rootController.view]; [WindowMakeKeyandVisible]; }
在interface builder中,确保选中mainwindow iPad的“启动时全屏显示”窗口属性。

这里真正的问题是,在文件mainwindow-iPad.xib中,创建的窗口对象的大小为320 x 480。正如ayman2010提到的,设置“启动时全屏”可以解决这一问题

为什么苹果会创造一个如此小的iPad窗口

您也可以在Interface Builder中打开(自动创建的)MainWindow-iPad.xib,选择文件/创建iPad版本,关闭MainWindow-iPad.xib并将未命名的新xib(大小正确)保存在旧xib上


BurninLeo

知道如何影响容器视图大小吗?请检查正在触摸的视图的.superview。拥有superview后,请查看.bounds.size以查看大小。因此,如果您正在触摸的视图名为touchableView,请检查touchableView.superview.bounds.size,并确保其尺寸正确。如果是,请检查superview的superview(touchableView.superview.superview.bounds.size)。继续这样做,直到用完SuperView。如果SuperView中没有什么不合适的地方,这可能不是问题所在。希望有帮助。得到了一些非常奇怪的结果。。。检查一下,嗯。如果您对self.view.bounds.size.width和.height执行相同的输出,会发生什么情况?这可能是一个太明显的建议,但您是否搜索了项目中的“320”或“480”实例?是的-我找不到任何。。。我的所有视图都显示良好-仅触摸事件不会在320x480区域之外触发。请改为
NSLog(@“%g”,…)
。宽度和高度是浮点数,而不是ints.CGSize使用浮点数,因此您可能希望像这样输出边界:
NSLog(@“%f”,wdth)
@kape:你确定
self.view.superview!=无
?否则你报告的数字就没有意义了。 2010-04-16 14:37:41.113 xxx[15084:207] -1.99837 2010-04-16 14:37:41.115 xxx[15084:207] 9.48221e-38 - (void)applicationDidFinishLaunching:(UIApplication *)application { // stupid Apple... CGRect rect = [[UIScreen mainScreen] bounds]; [window setFrame:rect]; // now, display your app [window addSubview:rootController.view]; [window makeKeyAndVisible]; }