【问题标题】:Custom numbers and characters keyboard for iPhone in Objective CObjective C 中 iPhone 的自定义数字和字符键盘
【发布时间】:2012-05-31 17:48:23
【问题描述】:

下面显示的键盘不是 Cocoa 提供的默认键盘的一部分,所以它必须是定制的。我需要创建一个如下所示的键盘。

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

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

【问题讨论】:

标签: objective-c ios cocoa-touch uikeyboard


【解决方案1】:

您可以使用 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;
}

【讨论】:

  • 是的,我相信这是不越狱的唯一方法。
【解决方案2】:

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

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

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

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

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

  3. 放弃并将inputAccessoryView 设置为一排数字按钮。这很容易。

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

【讨论】:

  • 是的,没错,这就是我得到图像的地方。我的问题是如何做到这一点。绝对不能有越狱或被拒绝的应用程序。听起来很痛苦的选项 2 可能是我必须遵循的选项,因为客户肯定想要那个键盘。谢谢!
【解决方案3】:

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

从以下几点开始:

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

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

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

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

【讨论】:

  • 问题不在于如何构建自定义视图,而在于如何将数字按钮行添加到默认键盘。
猜你喜欢
  • 2011-02-12
  • 1970-01-01
  • 2011-01-19
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
相关资源
最近更新 更多