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
}
4

2 に答える 2

1

使用する必要があります

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

代わりに iOS 7 で必要な作業を行います。

于 2013-10-09T07:54:48.667 に答える
-1

ピッカー ビュー セルではボタンを使用できません。ツールバーを使用し、その上にバー ボタン項目を追加しました。これで

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

行番号を取得し、それを使用して目的の機能を実行します。

于 2013-10-11T10:33:33.807 に答える