5

下面显示的键盘不是 Cocoa 提供的默认键盘的一部分,因此必须自定义构建。我需要创建一个看起来像下面这样的键盘。

我见过一些使用它的应用程序,我看到一些教程在顶部添加了一个带有一些按钮的自定义栏,但我需要它的外观和功能就像普通键盘一样,但有额外的数字行。

这如何在 Objective C 中以编程方式完成?有人可以指出我正确的方向吗?

在此处输入图像描述

4

3 回答 3

5

您可以使用 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;
}
于 2012-05-31T18:18:49.797 回答
2

您问题中的图片来自 5RowQWERTY 项目:http ://code.google.com/p/networkpx/wiki/Using_5RowQWERTY

该项目仅适用于越狱设备(据我所知),并且肯定使用私有 API,这使得应用商店无法接受。如果您可以接受这些限制,那么只需使用该项目即可。它会安装一个新的键盘布局文件 ( layout.plist)。

如果你想在非越狱设备上运行,或者将你的应用放到应用商店,你将无法使用该方法。我看到三个选项:

  1. 在它出现后在键盘的视图层次结构中挖掘(它有它自己的UIWindow,所以从[[UIApplication sharedApplication] windows]数组开始)并添加你自己的数字按钮。这是大量的工作,很难做好,而且很可能无论如何都会被苹果拒绝。

  2. 从头开始重新实现键盘。如果您想支持多种键盘布局并真正匹配系统键盘的感觉和行为,这是一项巨大的工作。

  3. 放弃,只设置inputAccessoryView一排数字按钮。这很简单。

我的建议是,除了选项 3 之外的任何事情都是浪费时间。只需使用 aninputAccessoryView来显示数字栏,然后转到应用程序中为用户增加真正价值的部分。

于 2012-05-31T18:37:50.687 回答
1

这是一个非常开放的问题。您基本上是在问“如何在 iOS 中创建自定义视图?”

以下是几点开始:

  1. 您正在创建一个具有系统默认键盘外观的新视图。您需要为每个键盘按钮收集资源(创建资源或获取免费资源)。

  2. 您可以将所有这些放在 IB 中。您的视图只不过是 UIButtons 的集合。

  3. 要使用键盘,您需要将视图指定为 inputView。

这是一个构建自定义 inputView 的教程:http ://www.raywenderlich.com/1063/ipad-for-iphone-developers-101-custom-input-view-tutorial

于 2012-05-31T18:03:57.727 回答