Tôi nhận thấy rằng didRotateFromInterfaceOrientation
không còn được dùng trong iOS 8; tuy nhiên, tôi có một ứng dụng cần duy trì tương thích với iOS7. Vấn đề tôi gặp phải là khi thiết bị được xoay (iPad trong trường hợp này), phương thức này được gọi hai lần. Điều này xảy ra trên một thiết bị thực tế cũng như với trình mô phỏng. Tôi đã chỉ cần đặt một NSLog trong phương pháp để hiển thị này.didRotateFromInterfaceOrientation firing Hai lần khi xoay
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"didRotateCalled");
}
Tôi cũng đã kiểm tra willRotateToInterfaceOrientation
nhưng thao tác đó chỉ hoạt động chính xác khi được gọi một lần.
Bất kỳ suy nghĩ nào tại sao phương pháp didRotateFromInterfaceOrientation
sẽ được kích hoạt hai lần mỗi lần quay?
Để cập nhật nhanh. Tôi đặt một breakpoint trong đó tiết lộ một cái gì đó thú vị. Chế độ xem này là UISplitviewcontroller
và có vẻ như phương pháp này được gọi là đầu tiên cho số UISplitviewcontroller
và sau đó là UIViewController
. Không chắc chắn lý do tại sao ...
Một số thông tin bổ sung. Tôi đang sử dụng Storyboards một cho iPhone và iPad khác. IPhone không sử dụng splitViewController
. Các cơ sở mã được chia sẻ như vậy trong prepareForSegue
Tôi làm như sau:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
UISplitViewController *splitViewController = (UISplitViewController *)self.view.window.rootViewController;
splitViewController.delegate = segue.destinationViewController;
}
In 'theInterfaceOrientation'. Bạn được những gì? –
liệt kê các lớp ViewController bạn đang sử dụng và nơi bạn đã triển khai 'didRotateFromInterfaceOrientation'.Nó có thể là phương pháp của bạn được gọi là từ các trường hợp khác nhau hoặc từ mã trong lớp và siêu lớp. – Christian
Phân chia chính là UITableViewController và phần chi tiết là UIViewController. Khi một ô được chọn ở bên chủ, chi tiết được "thay thế" bằng nội dung thích hợp. Bạn có thể thấy trong mã của tôi ở trên thiết lập cho điều đó trong preareForSegue. – C6Silver