2013-11-13 2 views
5

Я пытаюсь создать accessInputView, чтобы увеличить клавиатуру с помощью некоторых конкретных приложений.Как вы можете создать аксессуарInputView в дизайне раскадровки?

Я использую подход, основанный на раскадровке, чтобы отделить интерфейс от логики приложения.

Я не могу понять, как создать новый вид и связать его с textView. Является ли это возможным?

ответ

4

Если кто-то еще пытается это сделать, позвольте мне записать то, что я закончил делать.

Я создал новый 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; 
    ... 
} 
+0

Просто не уверен, что я могу беспокоиться об этом для 3 кнопок:/ – Rudiger

+0

Вы можете назначить один и тот же 'inputAccessoryView' нескольким кнопкам. – Diziet

2

Вы можете проверить этот пример проекта от компании Apple: https://developer.apple.com/library/ios/samplecode/KeyboardAccessory/Introduction/Intro.html

Чтобы достичь того же результата, что в образце, необходимо перетащить UIView экземпляр в окне «Структура документа», когда раскадровка открыта.

Это окно слева.

Затем вам нужно создать IBOutlet в вашем контроллере, чтобы получить доступ к представлению и установить его как inputAccessoryView.