2015-05-15 2 views
0

Я работаю над приложением, поддерживающим портретные и ландшафтные режимы на основе ограничений. Когда появляется UIAlertView, функция авторотации вызывает странный эффект. Я хочу избежать авторотации только UIAlertView. Пожалуйста, помогите мнеКак предотвратить авторотирование для UIAlertView?

+0

Что вы пытались до сих пор? – demonplus

+0

Искал и попробовал разные решения, но не работал вообще. Есть идеи? –

+0

Я не думаю, что вы можете включить поддержку ландшафта, а не автоматически настраивать виды предупреждений. вы можете просто выполнить пользовательский 'UIView', чтобы сделать это –

ответ

1

если Вы объявляя AlertView в другом классе .. в вашем случае AppDelegate

AppDelegate.h

@property BOOL alertShowing; 

AppDelegate.m при вызове шоу alertview установить логическое значение как показано на экране предупреждения.

UIAlertView *YOUR_ALERTVIEW = [[UIAlertView alloc] initWithTitle:title message:details delegate:self cancelButtonTitle:nil otherButtonTitles:@"Okay", nil]; 
self.alertShowing = YES; //SET A BOOL PROPERTY UNIVERSALLY 
[YOUR_ALERTVIEW show]; 

набор BOOL обратно в NO после отклонять от alertview

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
    { 
    self.alertShowing = NO; 
    } 

ViewController.m

затем проверить это логическое значение, прежде чем автоповорота.

-(BOOL)shouldAutorotate 
{ 

    BOOL rotate; 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    if (appDelegate.alertShowing) { 
    if (appDelegate.alertShowing==YES) { 
     rotate = NO; 
    } 
    else if(appDelegate.alertShowing == NO) 
    { 
     rotate = YES; 
    } 

    } 
    else 
    { 
    rotate = YES; 
    } 
    return rotate; 
} 
+0

Фактически alertview отображается с viewcontroller, где я отключил авторотирование. Но функция отображения alertview определена в appdelegate (sharedApplication Delegate). При необходимости вызывается этот метод. Будет ли это работать над этим сценарием ??? –

+0

, если вы вызываете alertview в appDelegate, установите BOOL в appDelegate. и проверьте appDelegate.alertviewShowing == true –

+0

Его не работает для меня :( –

Смежные вопросы