我正在尝试使用一些特定于应用程序的密钥来创建一个accessoryInputView来扩充键盘。
我正在使用基于Storyboard的设计方法来保持UI与应用程序逻辑分离。
我似乎无法理解如何创建新视图并将其与textView相关联。有可能吗?
答案 0 :(得分:5)
如果其他人试图这样做,让我记录下我最终做的事情。
我用我想要的accessoryView创建了一个新的XIB。我无法弄清楚如何分配 inputAccessoryView直接进入故事板设计,所以我做了以下几点。
我将XIB的fileOwner作为控制器类,其中包含需要accessoryView的textView并将视图分配给该类中的IBOutlet。这允许我加载XIB并自动将其分配给IBOutlet。
然后在viewDidLoad中,我将IBOutlet分配给需要它的textView。它运行良好,允许我在IB中完成所有UI工作,并将逻辑保留在控制器中。我想我可以考虑将inputAccessoryView设置为'logic'而不是UI设计,并认为这是一个很好的设计。不是很好,因为IB不允许直接从XIB设置inputAccessoryView或在故事板中创建不属于应用程序流的视图。
viewDidLoad中的代码如下所示:
- (void) viewDidLoad
{
...
[super viewDidLoad];
[[NSBundle mainBundle] loadNibNamed:@"NoteInputAccessoryView" owner:self options:nil];
_noteTextView.inputAccessoryView=_noteInputAccessoryView;
...
}
答案 1 :(得分:5)
您可以从Apple查看此示例项目: https://developer.apple.com/library/ios/samplecode/KeyboardAccessory/Introduction/Intro.html
要获得与示例相同的结果,您必须在故事板打开时将UIView实例拖放到“文档大纲”窗口中。
这是左边的窗口。
然后你必须在控制器中创建一个IBOutlet来访问视图并将其设置为inputAccessoryView。