我创建了一个按钮,就像下面的代码一样,但它不会在日志中响应(应该显示“ha”)。最奇怪的部分是我能够在集合视图中使用这个确切的代码,但通常不在viewcontroller上。按下按钮“myAction”我做错了什么?
-(void)viewDidLoad {
UIButton *buttonz = [UIButton buttonWithType:UIButtonTypeCustom];
buttonz.frame = CGRectMake(160, 0, 160, 30);
[buttonz setTitle:@"Charge" forState:UIControlStateNormal];
[buttonz addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
[buttonz setEnabled:YES];
[buttonz setBackgroundColor:[UIColor blueColor]];
//add the button to the view
[backImageView addSubview:buttonz];
}
-(void)myAction:(id)sender {
NSLog(@"ha");
[self resignFirstResponder];
NSLog(@"ha");
}
答案 0 :(得分:6)
1)
您无需在按钮上显示“resignFirstResponder
”(似乎大部分时间我看到“resignFirstResponder
”位于文本字段或文本视图中。)
2)
将控制事件从UIControlEventTouchUpInside更改为UIControlEventTouchDown
3)
父UIImageView可能没有将“userInteractionEnabled
”设置为true,这意味着事件不会被传播(或发送到)子视图。
要使这些事件可用于子视图,请通过以下方式更改父视图的userInteractionEnabled属性:
backImageView.userInteractionEnabled = YES;
在添加该子视图之前。
答案 1 :(得分:1)
默认情况下,图像userInteractionEnabled
处于禁用状态。因此,您必须通过backImageView.userInteractionEnabled = YES;