2012-03-29 3 views
-1

Я собираюсь реализовать Facebook-подобную навигацию для iPhone-приложения. Я могу легко и без проблем перемещать его, но когда я хочу нажать кнопку или что-нибудь в этом навигационном представлении, ничего не происходит.Объектив C: Subview не доступен для просмотра

Вот код для моего зрения боковой панели инициализирую в viewDidLoad:

self.sideNavigationView = [[UIView alloc] initWithFrame:CGRectMake(self.navigationController.view.frame.size.width, 20, 238, self.navigationController.view.frame.size.height-20)]; 
[self.navigationController.view addSubview:self.sideNavigationView]; 

Тогда у меня есть следующий метод, чтобы скользить его в:

- (IBAction) openMenuBar: (id) sender {  
if (!self.sideNavigationIsExpanded) { 
    self.sideNavigationView.frame = CGRectMake(self.navigationController.view.frame.size.width, 20, 238, self.navigationController.view.frame.size.height-20); 

} 
CGRect destination = self.navigationController.view.frame; 
CGRect sideNavigationDestination = self.sideNavigationView.frame; 

sideNavigationDestination.size.width = 238; 


// Slide back 
if (self.sideNavigationIsExpanded) {  
    sideNavigationDestination.origin.x = self.view.frame.size.width; 
    destination.origin.x = 0; 
    sideNavigationDestination.origin.y = 20; 
    self.sideNavigationIsExpanded = NO; 
} 
// Slide in 
else { 
    sideNavigationDestination.origin.x = self.view.frame.size.width; 
    destination.origin.x = - sideNavigationDestination.size.width;    

    sideNavigationDestination.origin.y = 20; 
    self.sideNavigationIsExpanded = YES; 

    self.sideNavigationView.hidden = NO; 
} 


[UIView animateWithDuration:0.25 animations:^{ 

    self.sideNavigationView.frame = sideNavigationDestination; 
    self.navigationController.view.frame = destination;   


} completion:^(BOOL finished) { 
    if (!self.sideNavigationIsExpanded) 
     self.sideNavigationView.hidden = YES; 
    self.view.userInteractionEnabled = !self.sideNavigationIsExpanded; 
    self.sideNavigationView.userInteractionEnabled = self.sideNavigationIsExpanded;   
}]; 

    } 

Я попробовал несколько комбинаций userInteractionEnabled = ДА в каждом подзаголовке ... Изменено ничего ... Может ли быть, что subviews моего sideNavigationView не могут быть выбраны, потому что когда я его инициализирую, он скрыт из виду? Я попытался инициализировать его с помощью рамки в поле зрения (CGRectMake (0,0,238,300)), и это сработало. -_- Так как я могу решить свою проблему?

ответ

0

Как sideNavigationView является подвид из self.view тогда эта линия:

self.view.userInteractionEnabled = !self.sideNavigationIsExpanded; 

препятствует штрихи от достижения ваших sideNavigationView вообще. Представление не будет касаться его подзонов, если для его собственного свойства userInteractionEnabled установлено значение НЕТ, даже если вы установили свойство subview в YES в следующей строке.

Что касается инициализации за пределами экрана, я не думаю, что это повлияет на то, сможет ли вид получать штрихи после его возврата на экран.

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