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