-4

我的一些课程订阅了设备方向更改时的通知。其他时候,我直接检查方向

[[UIDevice currentDevice] orientation]

正如你们大多数人所知,在 iOS 中存在以下方向:

typedef enum {
   UIDeviceOrientationUnknown,
   UIDeviceOrientationPortrait,
   UIDeviceOrientationPortraitUpsideDown,
   UIDeviceOrientationLandscapeLeft,
   UIDeviceOrientationLandscapeRight,
   UIDeviceOrientationFaceUp,
   UIDeviceOrientationFaceDown
} UIDeviceOrientation;

是否有一种应用程序范围的方法来禁止 FaceUp、FaceDown 和 Unknown 被报告?这些方向更新在 95% 的应用程序中无用,而 Unknown 在 99.9% 的应用程序中无用。

现在我只是忽略了这些方向(无论我是从直接检查方向还是从收到通知中看到它们),但它在某些情况下会引起烦恼。

无论如何,我猜没有办法阻止“无用”方向被报道,但我认为值得一问。我可能只需要继续处理它们,对吧?

编辑:
好的,基于我已经收到的反对票数量,显然不同意苹果是一种罪过。

但是,请向我解释一下收到通知您设备方向未知的通知会有什么帮助?这与根本没有收到任何通知有什么不同?与未发送任何通知相比,何时知道设备方向“未知”会有所帮助?如果我看到几个实际用例,其中知道方向未知并不是……没用,我愿意收回无用的声明。

4

1 回答 1

4

他们在那里是有原因的。在 Apple,他们不会制造无用的东西(Xcode 除外)。

虽然不可能直接修改方法而不返回它们,但您可以忽略它们——这有什么问题?

如果你真的很生气并且真的希望 UIDevice 不返回这些值,你可以越狱你的 iPhone/iPad 并- [UIDevice orientation]使用 MobileSubstrate 进行挂钩。

于 2012-08-15T15:45:10.940 回答