Если кто-то еще пытается это сделать, позвольте мне записать то, что я закончил делать.
Я создал новый XIB с аксессуаром, который я хотел в нем. Я не мог понять, как назначить inputAccessoryView непосредственно в дизайн раскадровки, поэтому я сделал следующее.
Я сделал fileOwner XIB в качестве класса контроллера, который содержит textView, которому необходим аксессуар, и назначил представление IBOutlet в этом классе. Это позволяет мне загружать XIB и автоматически назначать его на IBOutlet.
Затем в viewDidLoad я присваиваю IBOutlet текстовому элементу, который ему нужен. Он работает хорошо и позволяет мне выполнять всю работу пользовательского интерфейса в IB и поддерживать логику в контроллере. Думаю, я могу рассмотреть возможность ввода inputAccessoryView как «логики», а не дизайна пользовательского интерфейса, и считаю это хорошим дизайном. Не звездный, так как IB не позволяет устанавливать inputAccessoryView непосредственно из XIB или создавать представления в раскадровке, которые не являются частью потока приложения.
Код в viewDidLoad выглядит следующим образом:
- (void) viewDidLoad
{
...
[super viewDidLoad];
[[NSBundle mainBundle] loadNibNamed:@"NoteInputAccessoryView" owner:self options:nil];
_noteTextView.inputAccessoryView=_noteInputAccessoryView;
...
}
Просто не уверен, что я могу беспокоиться об этом для 3 кнопок:/ – Rudiger
Вы можете назначить один и тот же 'inputAccessoryView' нескольким кнопкам. – Diziet