2011-10-11 50 views
0

我嘗試在不使用xib文件的情況下創建視圖。 不幸的是,我在開發早期遇到了問題。UIBarButtonItem unclickable

我只是想在其中添加一個導航欄和一個OK按鈕。 一切似乎都沒問題,但在模擬器中,當我點擊按鈕時,沒有任何反應。 選擇器沒有被調用,它似乎也沒有到達按鈕(沒有改變方面)。

如果你可以看看我的代碼,它會有所幫助。

-(void)loadView { 
    //Set view background 
    UIImageView * backView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:MM_BACKGROUND]] autorelease]; 
    [self setView:backView]; 

    //Set navigationBar 
    UINavigationBar* navBar = [[[UINavigationBar alloc] initWithFrame:CGRectZero] autorelease]; 
    navBar.frame = CGRectMake(0, 0, 320, 44); 
    navBar.tintColor = [UIColor clearColor]; 
    navBar.barStyle = UIBarStyleBlackTranslucent; 

    UINavigationItem* navBarTitle = [[[UINavigationItem alloc] initWithTitle:@"My title"] autorelease];  
    UIBarButtonItem* backButton = [[[UIBarButtonItem alloc] initWithTitle:@"OK" style:UIBarButtonItemStyleBordered target:self action:@selector(onTouchBackButton)] autorelease]; 
    navBarTitle.leftBarButtonItem = backButton; 
    [navBar pushNavigationItem:navBarTitle animated:NO]; 
    [self.view addSubview:navBar]; 

} 

感謝

馬克西姆

回答

1

您的視圖控制器的視圖UIImageView默認情況下,UIImageView的用戶交互被禁用。因此,它也禁止所有子視圖的用戶交互(這就是爲什麼按鈕不響應觸摸)。你必須明確地設置,

backView.userInteractionEnabled = YES; 
+0

謝謝,它解決了我的問題。我可以長時間尋找解決方案。 –

+0

不客氣! ;-) – EmptyStack

0

你能提供onTouchBackButton選擇的代碼?

但只是胡亂猜測,也許你應該更改您的代碼...action:@selector(onTouchBackButton:)] autorelease];

通知存在:這是需要爲您的IBAction需要一個ARG (id) sender

+0

感謝您發表評論後,我從@EmptyStack應用的修復,我的應用程序崩潰,因爲失蹤「:」 –

0

馬克西姆·卡佩勒,

試試這個代碼,

UIImage* image = [UIImage imageNamed:@"back.png"]; 
    CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 
    UIButton* backgbtn = [[UIButton alloc] initWithFrame:frame]; 
    [backgbtn setBackgroundImage:image forState:UIControlStateNormal]; 
    [backgbtn setShowsTouchWhenHighlighted:YES]; 
    [backgbtn addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem* backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backgbtn]; 
    [self.navigationItem setLeftBarButtonItem:backBarButtonItem]; 
    [backBarButtonItem release]; 
    [backgbtn release]; 
+0

Maxime Capelle,寫入按鈕動作事件 - (IBAction)goBack {} – Prajan