2010-09-04 5 views
2

У меня есть viewController, который выводит модальный вид с помощью UIWebView. Если я нахожусь на особо тяжелой странице, я начинаю получать предупреждения о памяти, после чего родительское представление становится разгруженным. Все это прекрасно и денди, но когда я закрываю модальный вид, мой родитель перезагружает (как и ожидалось), но больше не способен обрабатывать любые события касания. Приложение правильно реагирует на изменения ориентации, но ничто не трогает изменения. Кнопки не работают, UIWebView не отвечает на прокрутку (но загружает веб-сайт по умолчанию) и т. Д. Это похоже на прозрачный UIView, охватывающий все мое окно. Любые идеи, почему это может произойти?Почему мой UIView не реагирует после перезагрузки?

Вот как я показать модальное окно:

BrowsingViewController* controller = [[BrowsingViewController alloc] 
    initWithNibName:UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ?  
    @"BrowsingViewController-iPad" : @"BrowsingViewController" 
     bundle:nil initialURL:[[request URL] absoluteString]];  
[self presentModalViewController:controller animated:YES];  
[controller release]; 

Вот как я уволить его (от самого модального зрения):

- (void) onCloseTouch 
{ 
    [self.parentViewController dismissModalViewControllerAnimated:YES]; 
} 

EDIT:

Проходя через я не замечаю ничего из нормы. Вот мои операторы журнала для главного контроллера. Они идентичны до и после того, как я показываю мой модальное зрения:

viewWillAppear called. 
=============== parentViewController subviews count=2 
View [0] is a UINavigationTransitionView 
subview count=0 
View [1] is a UINavigationBar 
subview count=2 
     subview [0] is a UINavigationItemView 
     subview [1] is a UINavigationButton 
=============== self views subviews count=3 
View [0] is a UIWebView with tag [1] 
subview count=1 
     subview [0] is a UIScrollView with tag [0] 
View [1] is a UIToolbar with tag [2] 
subview count=3 
     subview [0] is a UIToolbarTextButton with tag [0] 
     subview [1] is a UIToolbarButton with tag [0] 
     subview [2] is a UIToolbarButton with tag [0] 
View [2] is a UIView with tag [3] 
subview count=2 
     subview [0] is a UIActivityIndicatorView with tag [31] 
     subview [1] is a UILabel with tag [32] 

EDIT # 2: Эта проблема не может происходить в iPhone, только IPAD. Я изучил все места, где я выполняю if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad), и ни одна из этих логических функций не имеет никакого значения.

+0

Как вы отклоняете контроллер модального просмотра? И как вы показываете контроллер модального представления? Здесь может отображаться некоторый код. –

ответ

1

Я бы не отказался таким образом; Вместо этого я использовал бы шаблон делегата: когда BrowsingViewController хочет закрыть, он вызывает что-то вроде [delegate browsingViewControllerDidFinish:self];. Это «обычный» способ отклонить контроллер представления, а также исключает требование, чтобы BrowsingViewController всегда представлялся модально его родительским контроллером представления.

В чем разница между BrowsingViewController и BrowsingViewController-iPad xibs?

Я бы сделал некоторые проверки в «родительском» контроллере вида, пройдя через его view и все подпункты, чтобы увидеть, есть ли что-либо наложение (как вы говорите) поверх всей иерархии представлений, которая блокирует события касания.

+0

Различия между xibs незначительны. На самом деле, я тестировал его с помощью конкретной версии iPhone на iPad и все еще могу воспроизвести проблему. Вопрос был обновлен при рассмотрении иерархии представлений. –

+0

Обнаружена проблема. Это напоминает, как я отклонял модальный вид. Мой метод viewDidAppear проверял модальный вид и, если он присутствовал, он отображает другой «сложный» модальный. Проблема заключалась в том, что это вызывалось после того, как предыдущий был уволен. Почему это не проявлялось на iPhone, вне меня, но стыдно за меня за плохое программирование! –

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