将事件添加到scrollview中的按钮数组

时间:2012-01-03 12:10:46

标签: iphone objective-c xcode4

我正在创建一个包含时间段屏幕的应用程序,用户在半小时的时间段内显示一个按钮列表。我有时间段从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];

}

然而,当我点击按钮时,没有任何反应。谁能告诉我我做错了什么?

提前感谢您的帮助。

2 个答案:

答案 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);
}
如果我们处理按钮数组,则必须使用

标记。我认为你的最后一个按钮可能是响应按钮点击其余的按钮相互骑行