无法从 UIToolbar 中退出 UIPickerview
Unable to Resign UIPickerview from UIToolbar
我有一个 UItable,里面有一个 UItextbox。当用户点击文本框时,会显示 UIPickerView 并允许用户做出选择。有一个工具栏附加到 UIPickerView,带有一个完成按钮。我无法获得退出 UIPickerView 的完成按钮。
我有多个 UIPickerView,因为这是一项要求。所以我将我的工具栏放在它自己的方法中以重用它。
选择器委托方法全部工作并填充正确的文本并更新文本框。我就是无法让选择器关闭。
在我的 viewDidLoad
self.toolbar = [[UIToolbar alloc] init];
self.pickerColor = [[UIPickerView alloc] init];
[self.pickerColor setDataSource:self];
[self.pickerColor setDelegate:self];
self.pickerColor.showsSelectionIndicator = YES;
self.txt_color.delegate = self;
self.txt_color.inputView = self.pickerColor;
self.txt_color.inputAccessoryView = [self returnPickerToolbar];
还有其他选择器(pickerShape、pickerNumber)都有相应的文本框。
工具栏
- (UIToolbar*) returnPickerToolbar {
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:self
action:@selector(doneData:)];
[self.toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];
return self.toolbar;
}
完成按钮
- (void) doneData : (id) sender {
UIPickerView * picker = (UIPickerView*)sender;
[picker resignFirstResponder];
}
您需要 UITextField
的 resignResponder
,而不是 UIPickerView
。
您的选择器是该文本字段的输入视图,因此该文本字段的辞职响应者将自动关闭该选择器。
- (void)doneData:(id) sender
{
[self.txt_color resignFirstResponder];
// Also you can use [self.view endEditing];
}
如果 UIPickerView 是 UITextField 的 inputView,那么你应该将你的 Toolbar 设置为 UITextfield 的 inputAccessoryView。然后应该启用工具栏上的所有按钮。
我有一个 UItable,里面有一个 UItextbox。当用户点击文本框时,会显示 UIPickerView 并允许用户做出选择。有一个工具栏附加到 UIPickerView,带有一个完成按钮。我无法获得退出 UIPickerView 的完成按钮。
我有多个 UIPickerView,因为这是一项要求。所以我将我的工具栏放在它自己的方法中以重用它。
选择器委托方法全部工作并填充正确的文本并更新文本框。我就是无法让选择器关闭。
在我的 viewDidLoad
self.toolbar = [[UIToolbar alloc] init];
self.pickerColor = [[UIPickerView alloc] init];
[self.pickerColor setDataSource:self];
[self.pickerColor setDelegate:self];
self.pickerColor.showsSelectionIndicator = YES;
self.txt_color.delegate = self;
self.txt_color.inputView = self.pickerColor;
self.txt_color.inputAccessoryView = [self returnPickerToolbar];
还有其他选择器(pickerShape、pickerNumber)都有相应的文本框。
工具栏
- (UIToolbar*) returnPickerToolbar {
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:self
action:@selector(doneData:)];
[self.toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];
return self.toolbar;
}
完成按钮
- (void) doneData : (id) sender {
UIPickerView * picker = (UIPickerView*)sender;
[picker resignFirstResponder];
}
您需要 UITextField
的 resignResponder
,而不是 UIPickerView
。
您的选择器是该文本字段的输入视图,因此该文本字段的辞职响应者将自动关闭该选择器。
- (void)doneData:(id) sender
{
[self.txt_color resignFirstResponder];
// Also you can use [self.view endEditing];
}
如果 UIPickerView 是 UITextField 的 inputView,那么你应该将你的 Toolbar 设置为 UITextfield 的 inputAccessoryView。然后应该启用工具栏上的所有按钮。