下面显示的键盘不是 Cocoa 提供的默认键盘的一部分,因此必须自定义构建。我需要创建一个看起来像下面这样的键盘。
我见过一些使用它的应用程序,我看到一些教程在顶部添加了一个带有一些按钮的自定义栏,但我需要它的外观和功能就像普通键盘一样,但有额外的数字行。
这如何在 Objective C 中以编程方式完成?有人可以指出我正确的方向吗?
下面显示的键盘不是 Cocoa 提供的默认键盘的一部分,因此必须自定义构建。我需要创建一个看起来像下面这样的键盘。
我见过一些使用它的应用程序,我看到一些教程在顶部添加了一个带有一些按钮的自定义栏,但我需要它的外观和功能就像普通键盘一样,但有额外的数字行。
这如何在 Objective C 中以编程方式完成?有人可以指出我正确的方向吗?
您可以使用 UIToolbar 并在那里添加 0-9 按钮。您甚至可以像 iPhone 键盘一样将其着色或着色为灰色,但我不知道如何将其添加到实际的键盘视图中。
//Feel free to change the formatting to suit your needs more
//And of course, properly memory manage this (or use ARC)
UIBarButtonItem *my0Button = [[UIBarButtonItem alloc] initWithTitle:@"0" style:UIBarButtonItemStyleBordered target:self action:@selector(addNumberToString:)];
UIBarButtonItem *my1Button = [[UIBarButtonItem alloc] initWithTitle:@"1" style:UIBarButtonItemStyleBordered target:self action:@selector(addNumberToString:)];
UIToolbar *extraRow = [[UIToolbar alloc] init];
extraRow.barStyle = UIBarStyleBlack;
extraRow.translucent = YES;
extraRow.tintColor = [UIColor grayColor];
[extraRow sizeToFit];
NSArray *buttons = [NSArray arrayWithObjects: my0Button, my1Button, etc, nil];
[extraRow setItems:buttons animated:YES];
textView.inputAccessoryView = extraRow;
-(void) addNumberToString: (id) sender
{
//Where current string is the string that you're appending to in whatever place you need to be keeping track of the current view's string.
currentString = [currentString stringByAppendingString: ((UIBarButtonItem *) sender).title;
}
您问题中的图片来自 5RowQWERTY 项目:http ://code.google.com/p/networkpx/wiki/Using_5RowQWERTY
该项目仅适用于越狱设备(据我所知),并且肯定使用私有 API,这使得应用商店无法接受。如果您可以接受这些限制,那么只需使用该项目即可。它会安装一个新的键盘布局文件 ( layout.plist
)。
如果你想在非越狱设备上运行,或者将你的应用放到应用商店,你将无法使用该方法。我看到三个选项:
在它出现后在键盘的视图层次结构中挖掘(它有它自己的UIWindow
,所以从[[UIApplication sharedApplication] windows]
数组开始)并添加你自己的数字按钮。这是大量的工作,很难做好,而且很可能无论如何都会被苹果拒绝。
从头开始重新实现键盘。如果您想支持多种键盘布局并真正匹配系统键盘的感觉和行为,这是一项巨大的工作。
放弃,只设置inputAccessoryView
一排数字按钮。这很简单。
我的建议是,除了选项 3 之外的任何事情都是浪费时间。只需使用 aninputAccessoryView
来显示数字栏,然后转到应用程序中为用户增加真正价值的部分。
这是一个非常开放的问题。您基本上是在问“如何在 iOS 中创建自定义视图?”
以下是几点开始:
您正在创建一个具有系统默认键盘外观的新视图。您需要为每个键盘按钮收集资源(创建资源或获取免费资源)。
您可以将所有这些放在 IB 中。您的视图只不过是 UIButtons 的集合。
要使用键盘,您需要将视图指定为 inputView。
这是一个构建自定义 inputView 的教程:http ://www.raywenderlich.com/1063/ipad-for-iphone-developers-101-custom-input-view-tutorial