我必须在纵向模式下旋转设备,但是当我使用
时(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
//[[[UIApplication sharedApplication]keyWindow]subviews removeFromSuperview ];
// return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
return YES;
}
下面的代码,它在模拟器上工作正常,但当我用来在设备中安装代码时,它会使设备非常敏感,如果我只是稍微更改设备中的位置,它就会执行此代码并转到查看即时通讯显示手机的旋转 比任何人都告诉我,我怎么能控制设备的灵敏度我的意思是我只是想当用户完成90'旋转的位置比我的代码应该执行但它只是执行,如果只是摇动手机在相同的位置。
感谢您的帮助
Balraj verma
答案 0 :(得分:1)
您可能想要缓冲方向信息;也就是说,只有在您从传感器接收到多个指示,其方向与您当前显示的方向不同时才更改方向。
答案 1 :(得分:0)
根据我对您所写内容的理解,当设备旋转时,您的应用程序过于敏感?很难理解为什么会这样;您所包含的代码表明您的申请表愿意接受任何轮换,但您之前没有说明如何处理轮换事件。
根据信息,我只能建议您在代码中添加一个检查(可能是处理旋转事件的位置)并使用以下方式从设备获取方向:
[[UIDevice currentDevice] orientation];
将返回UIInterfaceOrientation枚举,说明设备的当前方向。
UIDeviceOrientationPortrait
UIDeviceOrientationPortraitUpsideDown
UIDeviceOrientationLandscapeLeft
UIDeviceOrientationLandscapeRight
然后,您可以使用它来确定是否需要更改方向。 (注意:这是iPhone OS 2.0。我相信OS 3.0有更多包括面朝上/朝下等)。
- (void) didRotate:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationLandscapeRight)
{
NSLog(@"Landscape Right!");
}
}
如果您发现方向切换太快,您可能想要缓冲信息,创建几个可以在切换到新方向之前进行比较的采样点。