UIActionSheet方向

时间:2011-01-20 09:07:46

标签: iphone

我在尝试使设备的方向正确时遇到问题。我必须根据设备的方向显示应该出现的操作表。这是我正在使用的代码。

UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;

  switch (orientation) 

  {
   case UIDeviceOrientationPortrait:
   case UIDeviceOrientationFaceUp:
   case UIDeviceOrientationFaceDown: 
   case UIDeviceOrientationUnknown:
   case UIDeviceOrientationPortraitUpsideDown:

   [self displayActionSheetInPotraitMode];
   break;

   case UIInterfaceOrientationLandscapeLeft:
   case UIInterfaceOrientationLandscapeRight:

   [self displayActionSheetInLandscapeMode];
   break;

   default:

   [self displayActionSheetInPotraitMode];
   break;
}

2 个答案:

答案 0 :(得分:0)

让我们看一下UIDevice Class Reference告诉我们orientation属性的内容。

  

除非通过调用beginGeneratingDeviceOrientationNotifications启用了方向通知,否则此属性的值始终返回0.

所以,你应该打电话给

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]

代码中的某个地方。


另外,我想建议一种简化当前代码的方法:

UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;

if (UIDeviceOrientationIsLandscape(orientation)) {
    [self displayActionSheetInLandscapeMode];
} else {
    [self displayActionSheetInPotraitMode];
}

答案 1 :(得分:0)

请在此处查看答案:UIActionSheet orientation

你应该添加一个UIView(将它作为子视图添加到UIWindow) - >将其转换为正确的方向,然后将UIActionSheet添加到此UIView。