Ada kasus lain pesan kesalahan ini mungkin muncul. Saya mencari berjam-jam sampai saya menemukan masalahnya. Utas ini sangat membantu setelah membacanya beberapa kali.
Jika pengontrol tampilan utama Anda diputar ke orientasi lanskap dan Anda menjalankan pengontrol sub tampilan kustom yang harus ditampilkan dalam orientasi potret, pesan kesalahan ini dapat terjadi jika kode Anda terlihat seperti ini:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationPortrait;
}
Perangkap di sini adalah intellisense xcode yang disarankan "UIInterfaceOrientationPortrait" dan saya tidak peduli tentang itu. Sekilas ini sepertinya benar.
Nama topeng yang tepat
UIInterfaceOrientationMaskPortrait
Waspadai infix kecil "Mask" , jika tidak subview Anda akan berakhir dengan pengecualian dan pesan kesalahan yang disebutkan di atas.
Enum baru sedikit bergeser. Enum lama mengembalikan nilai yang tidak valid!
(di UIApplication.h Anda bisa melihat deklarasi baru: UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait) )
Solusinya adalah:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// ATTENTION! Only return orientation MASK values
// return UIInterfaceOrientationPortrait;
return UIInterfaceOrientationMaskPortrait;
}
Digunakan dengan cepat
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}