为多个 UITextField 使用 inputAccessoryView UIToolbar
Posted
技术标签:
【中文标题】为多个 UITextField 使用 inputAccessoryView UIToolbar【英文标题】:Using an inputAccessoryView UIToolbar for Multiple UITextField's 【发布时间】:2013-06-12 08:27:07 【问题描述】:我有一个UIToolbar
,我用数字键盘将它作为inputAccessoryView
添加到三个UITextFields
。在这个UIToolbar
上,我有一个取消和完成按钮,可以根据这篇文章关闭键盘:trying to add done button to Numeric keyboard。这对UITextField
非常有效,可以轻松识别。但是,我尝试对三个UITextFields
使用相同的代码。这是我所拥有的:
- (void) viewDidLoad
[super viewDidLoad];
// weight, numberOfDrinks, and drinkingDuration are UITextFields set up in Storyboard.
// I implemented the UITextFieldDelegate protocol in the .h file and set the UITextField's delegates to the owning ViewController in Storyboard.
self.weight.delegate = self;
self.numberOfDrinks.delegate = self;
self.drinkingDuration.delegate = self;
- (void) textFieldDidBeginEditing:(UITextField *)textField
UIToolbar *doneToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
doneToolbar.barStyle = UIBarStyleBlackTranslucent;
// I can't pass the textField as a parameter into an @selector
doneToolbar.items = [NSArray arrayWithObjects:
[[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelKeyboard:)],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithKeyboard:)],
nil];
[doneToolbar sizeToFit];
textField.inputAccessoryView = doneToolbar;
- (void) cancelKeyboard: (UITextField *) textField
textField.text = @"";
[textField resignFirstResponder];
- (void) doneWithKeyboard: (UITextField *) textField
[textField resignFirstResponder];
我收到“无法识别的选择器发送到实例”错误,因为 cancelKeyboard 和 doneWithKeyboard 方法没有传递他们需要的 textField 参数。任何想法如何正确实施?
谢谢!
本
【问题讨论】:
【参考方案1】:在 .h 文件中使用全局对象 UITextField *SelectedTextField; // 在开始编辑方法中定义 选定文本字段 = 文本字段; 然后在你的方法上使用它来辞职或展示。
对你有帮助。
【讨论】:
【参考方案2】:如果只想在当前视图控制器中关闭键盘,可以调用视图控制器的视图属性的endEditing方法:
[self.view endEditing];
【讨论】:
非常酷我不知道这个!当我点击取消按钮时,它不允许我反转UITextField
的状态,但我很高兴知道它存在。以上是关于为多个 UITextField 使用 inputAccessoryView UIToolbar的主要内容,如果未能解决你的问题,请参考以下文章
成为FirstResponder 和多个 UITextField 焦点
如何使 UITextField 只有一个文本/数字并使用 Next / Done 按钮浏览多个`UITextField`