我正在创建一个包含时间段屏幕的应用程序,用户在半小时的时间段内显示一个按钮列表。我有时间段从9 - 6开始。
我通过创建像这样的for循环来创建按钮
UIButton *csBut = [[UIButton alloc]init];
csBut = [UIButton buttonWithType:UIButtonTypeCustom];
csBut.frame = CGRectMake(xPos, yPos, 145, 55);
[csBut setImage:[imageList objectAtIndex:i] forState:UIControlStateNormal];
[SV addSubview:csBut];
我使用我创建的imageList数组设置每个按钮的图像。 SV是我设置的scrollview。每个按钮都添加到此滚动视图中。按钮全部显示完美。现在我遇到的问题是,当我尝试设置按钮来做某事时,它没有响应按钮点击。我一直在使用
[csBut addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
我创建的方法应该只显示一个警告(只是温度,直到我正常工作)
-(IBAction)buttonClicked:(id)sender{
//ConfirmBut.hidden = NO;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Testing"
delegate:self cancelButtonTitle:@"Okay" otherButtonTitles: nil];
[alert show];
}
然而,当我点击按钮时,没有任何反应。谁能告诉我我做错了什么?
提前感谢您的帮助。
答案 0 :(得分:1)
UIScrollView不直接响应Touch事件,因此您只需在for循环中分配UIView并将按钮添加到该视图,如下所示。所以问题可能会得到解决。保持编码..
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(xPos, yPos, 145, 55);]
UIButton *csBut = [[UIButton alloc]init];
csBut = [UIButton buttonWithType:UIButtonTypeCustom];
csBut.frame = CGRectMake(0, 0, 145, 55);
[csBut setImage:[imageList objectAtIndex:i] forState:UIControlStateNormal];
[myView addSubview:csBut];
[SV addSubview:myView]
答案 1 :(得分:1)
UIButton是UIView的子类,所以它也有标签。例如,我制作了一个自定义的actionSheet,它包含一个UIButtons列表。当我按下UIButton时,我需要知道我按下了哪个按钮。因此,我将行信息分配给标记。
NSArray *buttonListArray = ....; ///< UIButton array, a button per row.
for (int tag_id = 0; tag_id < [buttonListArray count]; ++tag_id) {
UIButton * csBut = [buttonListArray objectAtIndex:tag_id];
csBut.tag = (100 + tag_id);
}
当我触摸按钮时,我可以通过
获取行信息- (void)buttonTouched:(id)sender {
UIButton * csBut = (UIButton *)sender;
NSInteger tag_id = (csBut.tag - 100);
}
如果我们处理按钮数组,则必须使用标记。我认为你的最后一个按钮可能是响应按钮点击其余的按钮相互骑行