Có một trường hợp khác, thông báo lỗi này có thể xuất hiện. Tôi đã tìm kiếm hàng giờ cho đến khi tôi tìm ra vấn đề. Chủ đề này rất hữu ích sau khi đọc nó một vài lần.
Nếu bộ điều khiển chế độ xem chính của bạn được xoay sang hướng ngang và bạn gọi bộ điều khiển chế độ xem phụ tùy chỉnh sẽ được hiển thị theo hướng dọc, thông báo lỗi này có thể xảy ra khi mã của bạn trông giống như sau:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationPortrait;
}
Cái bẫy ở đây là intellisense của xcode đề xuất "UIInterfaceOrientationPortrait" và tôi không quan tâm đến nó. Thoạt nhìn điều này có vẻ đúng.
Mặt nạ bên phải được đặt tên
UIInterfaceOrientationMaskPortrait
Hãy lưu ý đến tiền tố nhỏ "Mặt nạ" , nếu không chế độ xem phụ của bạn sẽ kết thúc với một ngoại lệ và thông báo lỗi đã đề cập ở trên.
Các enums mới có một chút thay đổi. Các enums cũ trả về các giá trị không hợp lệ!
(trong UIApplication.h bạn có thể thấy phần khai báo mới: UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait) )
Giải pháp là:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// ATTENTION! Only return orientation MASK values
// return UIInterfaceOrientationPortrait;
return UIInterfaceOrientationMaskPortrait;
}
Sử dụng nhanh chóng
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}