【问题标题】:UIPicker subview not recognizing inputUIPicker 子视图无法识别输入
【发布时间】:2014-02-18 17:45:50
【问题描述】:

我正在尝试使用类似于键盘上的inputAccessoryView 的工具栏来关闭 UIPickerView。

我为我的文本字段和我的选择器使用相同的 UIToolbar,文本字段将正确关闭,但选择器甚至无​​法识别我对按钮的触摸。

这是我用来创建工具栏的代码:

UIToolbar *tipToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
tipToolbar.barStyle = UIBarStyleDefault;
UIBarButtonItem *donebtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignResponder:)];
tipToolbar.items = [NSArray arrayWithObjects:
                    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                    donebtn, nil
];
[tipToolbar sizeToFit];
_outlet_txt_ipaddr.inputAccessoryView = tipToolbar;
[_outlet_picker addSubview:tipToolbar];

这是关闭键盘或选择器的操作:

- (IBAction)resignResponder:(id)sender{
    [_outlet_txt_ipaddr resignFirstResponder];
    [_outlet_picker resignFirstResponder];
}

工具栏出现在选择器视图中,但我点击完成按钮甚至没有显示动画,更不用说调用resignResonder 操作了。

【问题讨论】:

    标签: ios objective-c uipickerview


    【解决方案1】:

    对于选择器视图 [_outlet_picker resignFirstResponder];不会工作。

    您需要为选取器视图实现委托。

    试试这个代码

    UIToolbar *tipToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    tipToolbar.barStyle = UIBarStyleDefault;
    UIBarButtonItem *donebtn = [[UIBarButtonItem alloc] initWithTitle:@"Done"   style:UIBarButtonItemStyleDone target:self action:@selector(resignResponder:)];
    tipToolbar.items = [NSArray arrayWithObjects:
                    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                    donebtn, nil
     ];
    [tipToolbar sizeToFit];
    _outlet_txt_ipaddr.inputAccessoryView = tipToolbar;
    
    _outlet_picker.delegate=self;
    _outlet_picker.dataSource=self;
    _outlet_picker.showsSelectionIndicator=YES;
    
    [self.view addSubview:outlet_picker];
    
    -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
     {
    return 1;
     }
    
    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
    {
    return [pickerValueAry count];
    }
    
    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
    {
    NSMutableArray *ary = [[NSMutableArray alloc] initWithArray:pickerValueAry];
    id str=[ary objectAtIndex:row];
    return str;
    }
    
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
    {    
    NSLog(@"selectedRowInPicker >> %d",row);
    }  
    

    您可以在行选择时关闭选择器视图。

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      相关资源
      最近更新 更多