UIDevice.currentDevice()。beginGeneratingDeviceOrientationNotifications()无法正常工作

时间:2016-01-07 03:05:12

标签: ios swift

我正在尝试使用属性UIDevice.currentDevice()。orientation,所以我有类似以下的内容

UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications()
var orientation = UIDevice.currentDevice().orientation
switch orientation {
  case .Portrait:
    print("portrait")
    break
  case .PortraitUpsideDown: // Device oriented vertically, home button on the top
    print("upsidedown")
    magneticHeading += 180
    magneticHeading = magneticHeading % 360
    break
  case .LandscapeLeft: // Device oriented horizontally, home button on the right
    print("left")
    magneticHeading -= 90
    magneticHeading = magneticHeading % 360
    break
  case .LandscapeRight: // Device oriented horizontally, home button on the left
    print("right")
    magneticHeading += 90
    magneticHeading = magneticHeading % 360
    break
  case .FaceUp: // Device oriented flat, face up
    print("up")
    break
  case .FaceDown: // Device oriented flat, face down
    print("down")
    break
  case .Unknown:
    print("unknown")
    break
  default:
    print("default")
  }

我已经浏览了很多关于Stack Overflow的网页和问题,所有这些都使用了beginGeneratingDeviceOrientationNotifications()然后它就可以了。但是,我的代码根本不起作用。在switch语句中,无论我如何转动手机,它都会输入.Portrait。有谁知道为什么?

另外,我实际上想要设备的方向,而不是我的viewcontroller的方向。我需要知道设备是如何保持的,所以我需要使用currentDevice()。orientation

我也尝试过使用以下内容:

var interfaceOrientation = UIApplication.sharedApplication().statusBarOrientation
switch interfaceOrientation {
  case .Unknown:
    print("1")
  case .Portrait:
    print("2")
  case .PortraitUpsideDown:
    print("3")
  case .LandscapeLeft:
    print("4")
  case .LandscapeRight:
    print("5")

再次,无论我如何转动手机,都要输入.Portrait

2 个答案:

答案 0 :(得分:0)

enter image description here

请检查您的xcode目标常规设置

答案 1 :(得分:0)

经过长时间的尝试,我认为这是因为我将屏幕锁定在手机上。似乎无法检查用户是否已锁定手机。