UIButton在以编程方式创建时无响应并添加到uiimageview

时间:2012-06-30 16:36:53

标签: ios uiview uibutton

我的viewDidLoad方法中有以下代码。这是一个带有scrollview和页面控制器的uiviewcontroller。

我有以下代码,它从数组创建视图,在第3页上放置一个按钮:

 for (int i = 0; i < imageNames.count; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;

UIView *subview = [[UIView alloc] initWithFrame:frame];

UIImageView *myImageView =[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,self.view.frame.size.width,self.view.frame.size.height)];

myImageView.image=[UIImage imageNamed:[imageNames objectAtIndex:i]];

[subview addSubview: myImageView];


UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[button addTarget:self 
           action:@selector(doSomething:)
 forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];

if(i == 1){
[myImageView addSubview:button];
}
[self.scrollView addSubview:subview];

}

我有一个ibaction会将此视图视为模态视图:         - (IBAction为)doSomething的:(ID)发送方{            [self dismissModalViewControllerAnimated:YES];         }

问题是此按钮没有响应。它甚至不会在触摸时突出显示,更不用说调用doSomething方法了。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

注意确定如果这是问题但可能。

来自UIImageView文档:

  

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

答案 1 :(得分:3)

发布给未来的搜索者的利益......

如果启用userInteractionEnabled的{​​{1}}属性没有起作用,另一件需要注意的是UIButton的视图是否在其超级视图的框架之外。

当对象的视图位于其超级视图的框架之外时,它将显示给用户,但它将无法接收触摸事件。