2012-04-10 6 views
0

Ich möchte meine Sicht Landschaft behalten. Dafür benutze ich diesen Code aber BAD_ACCESS kommt. Hier schreibe ich diesen Code für Kamera overlayView.BAD_ACCESS während Querformat

-(void)viewDidLoad 
{ 
    [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft]; 
    //Set Notifications so that when user rotates phone, the orientation is reset to landscape. 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    //Refer to the method didRotate: 
    [[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(didRotate:) 
       name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 
    [super viewDidLoad]; 
} 

- (void) didRotate:(NSNotification *)notification 
{ 
     //Maintain the camera in Landscape orientation 
     [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft]; 
} 

Warum gibt es schlechten Zugang?

+0

'orientation' Eigenschaft ist schreibgeschützt. Wie Sie es einrichten? Es sollte eine Warnung geben. – beryllium

+1

Nur als Nebensatz - es ist eine schlechte Übung, den Wert '@" UIDeviceOrientationDidChangeNotification "' zu verwenden, wenn die Konstante 'UIDeviceOrientationDidChangeNotification' existiert, sollten Sie immer die Konstante verwenden. Der Compiler kann Ihnen sagen, ob Sie ihn falsch geschrieben haben und was passiert, wenn sich der Wert in zukünftigen iOS-Versionen ändert? (Einverstanden, in diesem Fall unwahrscheinlich, aber es ist immer besser, sicher zu sein!) – deanWombourne

Antwort

4

Um Ihre Ansicht Landschaft zu halten, kehren nur NO in Ihrem shouldAutorotateToInterfaceOrientation: Methode für Portrait- Orientierungen, wie tihs:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
}