按钮动作不能在iPhone上工作?

时间:2012-09-04 13:28:06

标签: iphone ios ipad

我有一个IPhone应用程序,我在其中添加自定义视图,尽管导航栏视图。我正常情况下隐藏自定义视图并在需要时取消隐藏它。现在我在该自定义视图中添加一个按钮一个动作。但是当我点击它时,没有动作正在工作。任何人都可以帮助我吗?这是我在视图didload`中的代码片段

curtainsView=[[UIImageView alloc]init];
curtainsView.image=[UIImage imageNamed:@"curtains.png"];
curtainsView.frame=CGRectMake(0,-44, 320, 60);
curtainsView.backgroundColor=[UIColor clearColor];
UIImage *button2Image = [UIImage imageNamed:@"scroll_down.png"];
scroll = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
self.scroll.tag=100;
[scroll setImage:button2Image forState:UIControlStateNormal];
self.scroll.frame = CGRectMake(270,0, 40,40);
[scroll addTarget:self action:@selector(backpressed:) forControlEvents:UIControlEventTouchUpInside]; 
[self.curtainsView addSubview:scroll];
[self.view addSubview:curtainsView];
[self changeNavigationBarTitleTo:@""];
[curtainsView setHidden:YES];

4 个答案:

答案 0 :(得分:2)

您必须启用curtainsView的用户交互。

试试这个:

[curtainsView setUserInteractionEnabled:YES]

来自Apple的UIImageView Class Reference

  

默认情况下,新图像视图对象配置为忽略用户事件。如果要处理UIImageView的自定义子类中的事件,则必须在初始化对象后显式将userInteractionEnabled属性的值更改为YES。

答案 1 :(得分:0)

检查backPressed方法的签名。我一开始没有意识到@selector(backpressed:)正在寻找:

-(void)backPressed:(id)sender { // the colon indicates the first argument

如果您的签名没有发件人参数,则需要在@selector中添加一个或删除冒号。即:

-(void)backPressed

答案 2 :(得分:0)

我不知道您的整个代码为什么隐藏视图,但我想说的是将UIButton添加到self.view而不是self.curtainsView
只需对代码稍作修改即可。

[self.view addSubview:curtainsView];
[self.view addSubview:scroll];

答案 3 :(得分:0)

启用curtainsView的用户交互。

[curtainsView setUserInteractionEnabled:YES]