gpt4 book ai didi

iOS5、iOS6、旋转、事件任意触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:32 24 4
gpt4 key购买 nike

我有一个支持方向变化和相应旋转的应用程序。我听事件 UIApplicationWillChangeStatusBarOrientationNotification。现在,在加载此应用程序期间,我添加了一些 View 并根据当前方向在我的应用程序中设置它们。

在 iOS 6 中,这工作正常并且应用程序响应和旋转正确,因此用户可以在横向和纵向模式下加载并且代码工作正常。

在 iOS 5 中,如果我以纵向模式加载应用程序,应用程序可以正常工作,一旦加载以纵向模式完成,并且 UI 已对齐和调整大小,它将响应其他方向更改为横向或肖像。我遇到的问题是:当以横向模式加载 iOS 5 时,同时将装有 iOS 5 的设备物理放置在平面上以确保其横向时,我得到一个从横向移动到纵向的 OrientationNotification(尽管设备没有改变)。

因此,在同一实验中,另一台 iOS 6 设备可以正确加载,我没有收到任何未发生的奇怪的旋转更改事件,但在 iOS 5 中,我确实收到了它们!!

有什么想法吗?

我支持两个 iOS 的方向

- (BOOL)shouldAutorotate {
return YES;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait ||
interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ||
interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

最佳答案

这听起来像是 iOS 5 认为如果实际上没有物理方向(即平面向上或向下)而 iOS 6 则没有,那么事物应该是纵向的。为了确定显示内容的方向,我在可用时使用实际设备方向,在设备平放时使用状态栏方向,这可能是值得的。例如:

// Get a useful screen orientation.
// If the device is physically in portrait or landscape then
// that is the orientation.
// If it is not, then it is probably flat on a table and use
// the orientation of the status bar which should be set to
// the last physical orientation.
//
// screen Orientation
//------------------------------------------------------------
+ (UIDeviceOrientation) screenOrientation {
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation!=UIInterfaceOrientationPortrait
&& orientation!=UIInterfaceOrientationPortraitUpsideDown
&& orientation!=UIInterfaceOrientationLandscapeLeft
&& orientation != UIInterfaceOrientationLandscapeRight) {
// Not known at this time. Use the status bar orientation
orientation = [[UIApplication sharedApplication] statusBarOrientation];
}
return orientation;
}

我不确定这对您是否有直接帮助,但也许在您的通知处理程序中您可以检查状态栏的实际方向。或者也许通知的时间和状态栏方向的改变并不能使它起作用。

关于iOS5、iOS6、旋转、事件任意触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15162021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com