iOS 7中UIPickerView按钮选择器问题

3

在 iOS 7 上,UIPickerView 出现了奇怪的问题。

我有一个包含 3 行的 UIPickerView。每行都有一个按钮,其选择器被定义,但是当点击按钮时它从未回应。

以下是我的代码:

- (UIView *)pickerView:(UIPickerView *)pickerView
        viewForRow:(NSInteger)row
      forComponent:(NSInteger)component
       reusingView:(UIView *)view {

NSLog(@"row %d", row);

if(view == nil) {
    view = [[[UIView alloc] init] autorelease];
}

[view setFrame:CGRectMake(0, 0, 320, 44)];
UIButton *manageButton = (UIButton *)[view viewWithTag:TAG_MANAGE + row];
UILabel *descTypeLabel = (UILabel *) [view viewWithTag:TAG_DESCTYPE_LABEL + row];
if(manageButton == nil &&  row != 0) {

    CGRect frame = CGRectMake(210, 7, 90, 30);
    manageButton = [UIButton buttonWithType:UIButtonTypeCustom];
    manageButton.frame = frame;
    [manageButton setTitle:@"Manage" forState:UIControlStateNormal];
    [manageButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [manageButton setBackgroundImage:[[UIImage imageNamed:@"blackButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(8, 8, 8, 8)] forState:UIControlStateNormal];
    manageButton.tag = TAG_MANAGE + row;
    [view addSubview:manageButton];
}
if(descTypeLabel == Nil) {
    descTypeLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, 190, 44)];
    descTypeLabel.backgroundColor = [UIColor clearColor];
    descTypeLabel.tag = TAG_DESCTYPE_LABEL + row;
    [descTypeLabel setText:[descTypes objectAtIndex:row]];
    [view addSubview:descTypeLabel];
    [descTypeLabel release];
}
//[manageButton addTarget:self action:@selector(managePressed:) forControlEvents:UIControlEventTouchUpInside];
[manageButton addTarget:self action:@selector(manageButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

return view;
}

-(void) manageButtonPressed : (UIButton *) sender {
//Not Called
}

1
你找到了解决方案吗?我也遇到了类似的问题。 - Rahul
你不能在选择器视图行上放置按钮。所以我在它上面添加了一个工具栏,并将按钮放在上面。我使用行号通过选择器来执行所需的功能。 - Nabeel Thobani
2个回答

1
你需要使用
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

在iOS 7中,改为进行所需的工作。

2
用户希望在选择器单元格中仅对按钮执行操作,而不是整个选择器单元格。 - Rahul
在iOS 7之前,这个功能表现得相当不错。对于UIPickerView中每一行的UIButton,按钮点击操作是可用的。但在iOS 7中,这个功能无法正常工作,需要使用didSelectRow方法,并通过UIPickerView的viewForRow方法找出哪一行/按钮被点击。您可以在iOS 7/XCode 5 [稳定版本]中尝试一下。 - user2788672

-1

你不能在选择器视图单元格上使用按钮。我已经使用了工具栏并在其上添加了一个条形按钮项。通过这种方式

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

你将获得行号,并使用它执行所需的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接