当我在选择器视图上添加工具栏时,工具栏按钮不起作用。它适用于iOS 6,但不适用于iOS 7。
UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0 ,0, 320, 44)];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(handleDone)];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(handleCancel)];
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:self
action:nil];
[toolBar setItems:[NSArray arrayWithObjects:cancelButton, flexible, doneButton, nil] animated:YES];
[pikerView addSubview:toolBar];
答案 0 :(得分:3)
UIToolbar
使用'完成'按钮应添加到成为第一响应者的视图的inputAccessoryView
。由于UIView
类继承自UIResponder
,因此任何视图都可能包含inputView
和inputAccessoryView
。因此,您可以使用UIResponder的键盘显示/隐藏动画附带的默认动画行为,而不是以编程方式手动执行动画。
对UIView
进行子类化并覆盖inputView
和inputAccessoryView
属性并将其设为readwrite
。在这个例子中,我将子类化UITableViewCell
。
// FirstResponderTableViewCell.h
@interface FirstResponderTableViewCell : UITableViewCell
@property (readwrite, strong, nonatomic) UIView *inputView;
@property (readwrite, strong, nonatomic) UIView *inputAccessoryView;
@end
覆盖子类中的canBecomeFirstResponder
'实施
// FirstResponderTableViewCell.m
- (BOOL)canBecomeFirstResponder {
return YES;
}
在视图控制器中,创建并指定选择器视图和输入附件工具栏
// MyViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
UIPickerView *pickerView = [[UIPickerView alloc] init];
UIToolbar *accessoryToolbar = [UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
// Configure toolbar .....
// note: myFirstResponderTableViewCell is an IBOutlet to a static cell in storyboard of type FirstResponderTableViewCell
self.myFirstResponderTableViewCell.inputView = pickerView;
self.myFirstResponderTableViewCell.inputAccessoryView = accessoryToolbar;
}
请勿忘记在需要时将第一响应者分配给视图(例如内部 - tableView:didSelectRowAtIndexPath:
)
[self.myFirstResponderTableViewCell becomeFirstResponder];
希望这有帮助。
参考:http://blog.swierczynski.net/2010/12/how-to-create-uipickerview-with-toolbar-above-it-in-ios/