2014-02-18 58 views
0

我想使用类似于键盘上的inputAccessoryView的工具栏来解除UIPickerView。UIPicker子视图无法识别输入

我对我的文本字段和我的选择器都使用相同的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动作。

回答

1

for picker view [_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); 
} 

可以解雇行选择的选择器视图。

+0

谢谢,这解决了我的问题! –