shouldAutorotate, supportedInterfaceOrientations and preferredInterfaceOrientationForPresentation does not work as expected in iOS 7

后端 未结 1 804
遇见更好的自我
遇见更好的自我 2020-12-31 18:21

I\'m having problems trying to block the orientations in some views, but the code is not working property.

I\'m using this lines in every view:

- (BO         


        
相关标签:
1条回答
  • 2020-12-31 18:59

    Ok I solve it, you have to subclass UINavigationController and UITabBarController, so here is the code:

    //cCustomNavigationController.h file
    
    #import <UIKit/UIKit.h>
    
    @interface cCustomNavigationController : UINavigationController <UINavigationControllerDelegate>
    
    @end
    
    //cCustomNavigationController.m file
    
    #import "cCustomNavigationController.h"
    
    @interface cCustomNavigationController ()
    
    @end
    
    @implementation cCustomNavigationController 
    
    - (BOOL)shouldAutorotate {
        return [self.visibleViewController shouldAutorotate];
    }
    
    - (NSUInteger)supportedInterfaceOrientations {
        return [self.visibleViewController supportedInterfaceOrientations];
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
        return [self.visibleViewController preferredInterfaceOrientationForPresentation];
    }
    
    @end
    
    //cCustomTabController.h file
    
    #import <UIKit/UIKit.h>
    
    @interface cCustomTabController : UITabBarController <UITabBarControllerDelegate>
    
    @end
    
    //cCustomTabController.m file
    
    #import "cCustomTabController.h"
    
    @interface cCustomTabController  ()
    
    @end
    
    @implementation cCustomTabController
    
    - (BOOL)shouldAutorotate {
        return [self.selectedViewController shouldAutorotate];
    }
    
    - (NSUInteger)supportedInterfaceOrientations {
        return [self.selectedViewController supportedInterfaceOrientations];
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
        return [self.selectedViewController preferredInterfaceOrientationForPresentation];
    }
    
    @end
    

    now you just have to create your TabBarController or your NavigationController using this classes where ever you need it i.e.

    //For the UINavigationController
    UINavigationController *navigationController = [[cCustomNavigationController alloc] init];
    
    //For the UITabBarController
    UITabBarController *tabController = [[cCustomTabController alloc] init];
    

    I hope this help you guys.

    0 讨论(0)
提交回复
热议问题