7

Theo tiêu đề. Gọi [[UIDevice currentDevice] BeginGeneratingDeviceOrientationNotifications] không có hiệu lực.UIDevice currentDevice's "orientation" luôn rỗng

DidRotateToInterfaceĐối tượng sự kiện vv đang hoạt động tốt, nhưng tôi cần có thể thăm dò ý kiến ​​định hướng thiết bị tùy ý.

Làm cách nào để khắc phục/thực hiện việc này?

Câu chuyện dài: Tôi có ứng dụng tab với bộ điều khiển điều hướng trên mỗi tab. Chế độ xem gốc của tab số một là biểu đồ chuyển sang chế độ toàn màn hình khi hướng thay đổi thành cảnh quan; tuy nhiên điều này cần được kiểm tra bất cứ khi nào chế độ xem xuất hiện khi thay đổi định hướng có thể xảy ra ở nơi khác, vì vậy tôi đã hy vọng sẽ thăm dò ý kiến ​​trạng thái định hướng bất cứ khi nào chế độ xem này xuất hiện.

Trả lời

0

Sẽ không [[UIDevice currentDevice] định hướng] cung cấp cho bạn trạng thái hướng hiện tại? Bạn có thể kiểm tra điều này trong phương thức viewWillAppear của bộ điều khiển xem muốn thăm dò ý kiến.

Chỉnh sửa: Ngoài ra, có nhiều cách khác nhau để có được định hướng hiện tại, chẳng hạn như sử dụng thuộc tính statusBarOrientation trong UIApplication hoặc thuộc tính interfaceOrientation trong UIViewcontroller.

+0

Có vẻ như bạn chưa đọc câu hỏi. Anh ta nói rằng phương thức đó đang trả về NULL mặc dù anh ấy đang gọi beginGeneratingOrientationNotifications. – Jasarien

2

có vẻ như một câu hỏi ngớ ngẩn, nhưng không phải là nó

beginGeneratingDeviceOrientationNotifications

(thấp hơn trường hợp b) ...

9

khái niệm về định hướng UIDevice của vẻ là chỉ có sẵn trên các thiết bị thực tế. Trình mô phỏng dường như luôn trả về 0 ở đây, bất kể thông báo đã được bật như các tài liệu đề xuất hay chưa. Gây bất tiện, nhưng có bạn đi.

Tôi thấy việc này tốt trên các thiết bị thực tế:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    NSLog(@"orientation: %d", [[UIDevice currentDevice] orientation]); 
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 
+1

Vâng, chỉ lãng phí 2h cố gắng để tìm ra những gì đã sai nhưng thực sự nó chỉ là giả lập. Tất cả đều hoạt động tốt trên thiết bị. – samvermette

+3

[Định hướng [UIDevice currentDevice]] không hoạt động nếu người dùng đã khóa hướng thiết bị của mình từ Springboard. định hướng luôn là giá trị cuối cùng và không có thông báo cho các thay đổi. – Jeff

+5

UIDeviceGiao diện tuyển dụngOrientation = [UIApplication sharedApplication] .statusBarOrientation; giải pháp thay thế này làm việc cho tôi – iMeMyself

1

Nếu bạn kiểm tra [[UIDevice currentDevice] orientation] trong - (void)viewDidLoad bạn sẽ luôn có được không.

Kiểm tra nó ở * - (void) viewDidAppear:(BOOL) * phương pháp hoạt hình và bạn

+1

"... bạn sẽ luôn nhận được' nil' ". Tài liệu này có được không? –

1

đây là theo iMeMyself nói trong các ý kiến ​​ở trên - điều này Samed tôi rất nhiều thời gian và tôi nghĩ là câu trả lời đúng vì vậy tôi muốn làm nổi bật tại đây:

UIDeviceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation; 

if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) 
{ 
    //do stuff here 
} 
else if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) 
{ 
//or do stuff here 
} 
+0

điều này làm việc cho tôi, nhưng không nên là giao diện 'UIInterfaceOrientationOrientation = [....'? – Jimmery

+0

được cập nhật để sử dụng ở trên – craigk

Các vấn đề liên quan