2012-03-29 103 views
-1

我即將實施的iPhone應用程序類似於Facebook的側邊導航。我可以毫無問題地將其滑入和滑出,但是當我想單擊某個按鈕或該導航視圖中的任何內容時,什麼都不會發生。目標C:子視圖不能點擊

這裏是我在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 =是在每個子視圖...沒有任何改變... 難道是我的sideNavigationView的子視圖是不可選的,因爲當我初始化它是不可見的?我試着用一個可見的框架初始化它(CGRectMake(0,0,238,300))並且工作。 -_- 那麼我怎麼能解決我的問題?

回答

0

由於sideNavigationView是self.view的子視圖那麼這行:

self.view.userInteractionEnabled = !self.sideNavigationIsExpanded; 

是防止接觸從根本上達到你sideNavigationView。即使您已在下一行中將子視圖的屬性設置爲YES,視圖也不會將它的子視圖傳遞給它自己的userInteractionEnabled屬性。

至於初始化屏幕外,我不認爲這會對一旦移回屏幕視圖是否可以接收觸摸任何影響。