向滚动视图中的按钮数组添加事件



我正在创建一个应用程序,其中包含一个时间段屏幕,其中用户在半小时插槽中显示按钮列表。我有从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是我设置的滚动视图。每个按钮都添加到这个滚动视图中。按钮都显示得很好。现在我遇到的问题是,当我尝试设置按钮做某事时,它不响应按钮点击。我一直在用

[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];

}

然而,当我点击按钮时,什么也没有发生。有人能告诉我我做错了什么吗?

提前感谢您的帮助。

UIScrollView不直接响应触摸事件,所以你只需要在你的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]

UIButton是UIView的一个子类,所以它也有标签。例如,我创建了一个自定义actionSheet,它包含一个uibutton列表。当我按下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);
}
如果我们处理按钮数组,

标记是必须的。我认为你的最后一个按钮可能是按钮点击的响应其余的都是重叠的

最新更新