2011-10-11 55 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