Używam willRotateToInterfaceOrientation
do zamiany widoków, gdy mój iPad obraca się. Jeśli mam widok modalny lub widok alertu otwarty, gdy moje urządzenie obraca się i zamienia widoki, widok zostaje zamieniony, a alert znika i nie pojawia się ponownie, nawet jeśli alarm zostanie "przedstawiony" później.Jak zatrzymać znika widok modalny podczas obracania na iPadzie?
Edytuj: Zawęziłem ten problem. Kiedy przedstawiono widok modalny z UIModalPresentationFullScreen
, widok modalny "przetrwa" rotacje.
Co mogę zrobić, aby to naprawić?
Oto moja realizacja willRotateToInterfaceOrientation
:
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
//
// Load an alternate view depending on the orientation
//
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
[UIView beginAnimations:@"" context:nil];
[self setView:theLandscapeView];
self.view.bounds = CGRectMake(0, 0, 1024, 768);
self.view.transform = CGAffineTransformMakeRotation(kDegreesToRadians * (-90));
[UIView commitAnimations];
}else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
[UIView beginAnimations:@"" context:nil];
[self setView:theLandscapeView];
self.view.bounds = CGRectMake(0, 0, 1024, 768);
self.view.transform = CGAffineTransformMakeRotation(kDegreesToRadians * (90));
[UIView commitAnimations];
}else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
[UIView beginAnimations:@"" context:nil];
[self setView:thePortraitView];
self.view.transform = CGAffineTransformMakeRotation(kDegreesToRadians * (0));
self.view.bounds = CGRectMake(0, 0, 768, 1024);
[UIView commitAnimations];
}else if (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
[UIView beginAnimations:@"" context:nil];
[self setView:thePortraitView];
self.view.transform = CGAffineTransformMakeRotation(kDegreesToRadians * (180));
self.view.bounds = CGRectMake(0, 0, 768, 1024);
[UIView commitAnimations];
}
}
Dzięki. Na razie pracuję, nie zamieniając widoków, ale to nie jest rozwiązanie ... – Moshe
Tak, nigdy nie spotkałem się z tym problemem, ale to jest po prostu dlatego, że zmieniam tylko rozmiar widoków dotyczących zmiany orientacji zamiast ich zastępowania . Czy byłoby możliwe zaprezentowanie strony modalnej z przejrzystego widoku hostingowego, ale czy twoja zawartość powinna znajdować się w wyglądzie tego, który jest wyłączony przy zmianie orientacji? –
@BradLarson - Dziękujemy za spojrzenie. Myślę, że Twoja sugestia działałaby, ale jest nieznacznie nieefektywna, ponieważ musisz załadować dodatkowy widok (kontroler). Na razie czekam, aż Apple odpowie na to pytanie i ręcznie zmieniam rozmiar itp. Chciałem tego uniknąć, ponieważ UIImageViews nie przyjmuje tego zbyt dobrze. – Moshe