ios添加自定义inputView

Mar*_*arc 5 customization nib ios inputview

无论我读了多少,我都坚持使用iOS中的一个概念,我似乎无法理解.我试图用自定义设计覆盖标准iOS数字键盘.当用户触摸UITextField时,我希望显示自定义inputView而不是标准数字键盘.

我为我的自定义inputView创建了一个单独的.h/.m/.xib ViewController类,名为"customInputViewController"现在,它只是一个黑暗的背景和一个按钮,当触摸UITextField时,它会遮挡大约一半的屏幕(类似于数字垫,但它看起来不同).当我单击自定义inputView中的一个按钮时,我的实现失败 - iOS会抛出EXC_BAD_ACCESS错误.

这是我在运行时加载.xib文件并将自定义inputView附加到UITextField对象的方法:

UIViewController *v = [[customInputViewController alloc] initWithNibName:@"customInputDesign" bundle:nil];
myTextInput.inputView = v.view;
Run Code Online (Sandbox Code Playgroud)

在自定义inputView的.xib文件中,我将File的Owner设置为"customInputViewController",然后创建了一个(IBAction)方法并将其附加到UIButton.单击该按钮时,(IBAction)设置为发送NSLog(@"按钮单击")消息.没什么特别的.它只是一个简单的样板实现,继续引发错误.

也许我这样做完全错了.有谁可以提供一个简单的例子?

Cha*_*ran 1

首先,看看这个

UIKit 框架包括对自定义输入视图和输入附件视图的支持。当用户在视图中编辑文本或其他形式的数据时,您的应用程序可以用自己的输入视图替换系统键盘。例如,应用程序可以使用自定义输入视图来输入符文字母表中的字符。您还可以将输入附件视图附加到系统键盘或自定义输入视图;该辅助视图沿着主输入视图的顶部运行,并且可以包含例如以某种方式影响文本的控件或显示有关文本的某些信息的标签。

如果您的应用程序使用 UITextView 和 UITextField 对象进行文本编辑,要获得此功能,只需将自定义视图分配给 inputView 和 inputAccessoryView 属性即可。当文本对象成为第一响应者时,将显示这些自定义视图...

实际上我不需要向你提及所有这些混乱,但是提到这一点有一个有趣的原因,从第一句话开始我就提到了视图-视图-视图,但是你正在一个单独的视图控制器中制作输入视图并且您正在尝试将其分配为文本字段的输入视图,并且 init 不应该创建该视图,而是 loadView 执行此操作。当视图为零时调用视图 getter (v.view) 将导致调用 loadView。这就是它因 EXC_BAD_ACCESS 崩溃的原因。

来源:iOS 文本、Web 和编辑编程指南