2016-03-22 19 views
1

Ich möchte einzelne Viewcontroller in iPhone und iPad sperren. Dieser Code funktioniert perfekt in iPhone 4,5,6 iPad, iPad 2, iPad Retina. Aber funktioniert nicht in iPad Pro.Autorotate auf einem einzelnen UIViewController deaktivieren funktioniert nicht in iPad Pro

Dieser obige Code ist in meinem View-Controller geschrieben, die View-Controller möchte ich nicht drehen.

+0

Was ist iOS-Version auf dem iPad pro – Chetan

+0

Versuchen Sie niemals Methoden mit einer Kategorie zu überschreiben. Es ist undefiniertes Verhalten. – rmaddy

+0

@Chetan iOS 9.1 –

Antwort

2

schreiben Dieser Code unten in View-Controller, der Controller-Ansicht u Portrait-Modus

@implementation UINavigationController (Orientation) 
-(NSUInteger)supportedInterfaceOrientations 
{ 
     return [self.topViewController supportedInterfaceOrientations]; 
} 

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 
@end 

#pragma mark Orientation 
-(BOOL)shouldAutorotate 
{ 
    [super shouldAutorotate]; 
    return NO; 
} 
-(NSUInteger) supportedInterfaceOrientations { 
    [super supportedInterfaceOrientations]; 
    // Return a bitmask of supported orientations. If you need more, 
    // use bitwise or (see the commented return). 
    return UIInterfaceOrientationMaskPortrait; 
    // return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown; 
} 

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation { 
    [super preferredInterfaceOrientationForPresentation]; 
    // Return the orientation you'd prefer - this is what it launches to. The 
    // user can still rotate. You don't have to implement this method, in which 
    // case it launches in the current orientation 
    return UIInterfaceOrientationPortrait; 
} 

Und jetzt tun darunter sperren wollen Änderungen in Ihrem Plist Datei enter image description here

+0

Danke! Ich dachte, ich hätte alles versucht. Setzen Sie die richtigen Checkboxen auf die Projektinformationen, überprüfen Sie den Vollbildmodus und überschreiben Sie die richtigen Methoden. Sie wurden sogar angerufen. Ich habe das Problem behoben, indem ich in info.plist gegangen bin und die Ausrichtung für das iPad entfernt habe. Dumm, dass sie nicht für ein universelles Projekt in der Projektinfo angezeigt werden. – VaporwareWolf

+0

@VaporwareWolf Großartig !!! Wenn meine Antwort zu Ihnen hilft, dann pls upvote meine Antwort –

1

schreiben dies in Ihrem View-Controller, die Sie nicht wollen,

Diese drehen wird jede Drehung zu verhindern.

Die View-Controller-Klasse, die Sie nicht drehen möchten, sollte dies haben.

- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 

The containing navigation controller class should have this. 

- (BOOL)shouldAutorotate 
{ 
    return [self.topViewController shouldAutoRotate]; 
} 

Dies wird nur zu Porträt drehen

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
+0

Diese Lösung funktioniert nicht. –

+0

Überprüfen Sie die Bearbeitung und versuchen Sie das gleiche – Chetan

+0

Nicht beide Methoden in View-Controller deklarieren. Einer ist im View Controller und einer in der Navigationssteuerklasse zu deklarieren. Lesen Sie die Antwort erneut – Chetan