【发布时间】:2011-08-01 07:09:07
【问题描述】:
我想要一个上面有 Next、Previous 和 Done 按钮的键盘。
我在很多应用中都看到了这一点。
尤其是需要填写表格的地方。
我想实现类似于上面键盘的东西
我怎样才能得到它?
【问题讨论】:
标签: iphone cocoa-touch ios4 iphone-keypad
我想要一个上面有 Next、Previous 和 Done 按钮的键盘。
我在很多应用中都看到了这一点。
尤其是需要填写表格的地方。
我想实现类似于上面键盘的东西
我怎样才能得到它?
【问题讨论】:
标签: iphone cocoa-touch ios4 iphone-keypad
您将在this other post 上找到答案。 我检查了 iOS 库,UITextField 的 inputAccessoryView 正是您要找的!
希望这会有所帮助!
【讨论】:
我刚刚创建了一个名为BSKeyboardControls 的类,它可以很容易地将控件添加到键盘。类、说明和示例代码可以在here at GitHub找到。
这些控件适用于文本字段和文本视图,并针对 iPhone 和 iPad 进行了优化。
【讨论】:
-(BOOL)textFieldShouldBeginEditing: (UITextField *)textField
{
UIToolbar * keyboardToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
keyboardToolBar.barStyle = UIBarStyleDefault;
[keyboardToolBar setItems: [NSArray arrayWithObjects:
[[UIBarButtonItem alloc]initWithTitle:@"Previous" style:UIBarButtonItemStyleBordered target:self action:@selector(previousTextField)],
[[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStyleBordered target:self action:@selector(nextTextField)],
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)],
nil]];
textField.inputAccessoryView = keyboardToolBar;
}
- (void)nextTextField {
if (textField1) {
[textField1 resignFirstResponder];
[textField2 becomeFirstResponder];
}
}
-(void)previousTextField
{
if (textField2) {
[textField2 resignFirstResponder];
[textField1 becomeFirstResponder];
}
}
-(void)resignKeyboard {
[textField1 resignFirstResponder];
[textField2 resignFirstResponder];
}
【讨论】:
我有一个实用程序类,基本上可以为你做这件事。
https://github.com/kalvish21/CustomKeyboard
这个想法很简单。您必须添加一个带有栏按钮项目的附件工具栏。有一个委托定义了该按钮的作用。
【讨论】:
https://github.com/hackiftekhar/IQKeyboardManager
这是迄今为止我见过的最好的键盘处理程序。管理文本输入的非常好的方法。
它的一些功能 1) 零代码行
2) 自动工作
3) 不再有 UIScrollView
4) 不再有子类
5) 不再需要手动操作
6) 不再有#imports
【讨论】:
这是一个直接放置在键盘上方的自定义控件。我认为可以使用 UIToolbar。
在 textFields 的 firstResponder 周围的上一个和下一个传递,Done 将执行辞职以及隐藏工具栏。
要匹配键盘动画,请查看我找到的 this code 或 SO:"What is the iPhone's default keyboard animation rate?"
【讨论】:
我创建了一个repository,并实现了此功能,该功能可在 iPhone/iPad 上以所有方向运行且高度可定制。
【讨论】:
正如其他答案中所述,您正在寻找的是inputAccessoryView。
我想在这里添加一种替代方式,使用这个 cocoapods:
所有UITextFields 将有两个附加属性:nextTextField 和previousTextField。然后,您可以在 Interface Builder 中简单地连接 nextTextField,并自动为您添加上一个、下一个和完成按钮,所有功能,无需更多代码,无需子类化。
您还可以根据需要自定义 UI、添加更多按钮等。
【讨论】: