След dismissViewController моят изглед остава в ориентацията на предишния контролер на изглед в iOS7

Тъй като работя с поддръжка на iOS приложения само Portrait Orientation. Но получавам някакъв проблем, свързан с ориентацията.

  • Приложението ми поддържа само портретна ориентация

  • когато родителят ми P1.view е насочен с помощта на навигация, той е в портретен режим, това е добре. Сега от P1.view преглеждам дъщерния си изглед C1.view

  • Сега съм в childview C1.view и оттам с помощта на делегат се обаждам

    -(void)imagePickerController:(UIImagePickerController *)избор

    [self.delegate openCamera];//извикан от C1.view

    -(void)openCamera   //declared in P1.view
        {
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.allowsEditing = NO;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;>             
            [self presentModalViewController:picker animated:YES];
        }
    
  • Сега, когато заснемам снимка в пейзажен режим и отхвърлям този presentModalViewController, изгледът ми се появява в пейзажен режим вместо в портретен режим.

        - (BOOL)shouldAutorotate {
            return YES;
        }
        - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
         return (interfaceOrientation == UIInterfaceOrientationPortrait ||
                interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
        }
    
        - (NSUInteger)supportedInterfaceOrientations {    
            return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
        }
        - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
            return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
        }
    

Тези методи се дефинират както в контролера на изгледа (P1 & C1), така и се извикват при отхвърляне на modelview, но моят контролер на изглед остава в пейзаж, което не трябва да се случва.

Този код работи добре в iOS6, но не и в iOS7


person utkal patel    schedule 26.06.2014    source източник
comment
За iOS 7 трябва да използвате -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration Но това няма да работи в iOS 6.   -  person nikhil84    schedule 26.06.2014


Отговори (1)


Мисля, че preferredInterfaceOrientationForPresentation не трябва да връща малко маска. Можете да опитате:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; }

person spassas    schedule 26.06.2014