Пользовательское представление ввода в качестве клавиатуры для текстового поля в Swift с использованием OSX 10.9 и Xcode 6.1.1 +

У меня возникли проблемы с подключением кнопок после загрузки настраиваемой клавиатуры представления ввода. Мои основные экраны - это раскадровка, а мой пользовательский вид - xib.

Представление ввода - это перо с владельцем файла, указывающим на его быстрый класс. Я загружаю представление ввода с кодом в другом контроллере представления, используя:

extension UIView {
class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> UIView? {
    return UINib(
        nibName: nibNamed,
        bundle: bundle
        ).instantiateWithOwner(nil, options: nil)[0] as? UIView
}
}

Внутри контроллера основного представления я создаю представление ввода с помощью:

var myInputView = UIView.loadFromNibNamed("keypadInputViewController", bundle: nil)

keypadInputViewController - это базовое имя xib и его файла swift, а также имя класса в файле swift.

Я прикрепляю эту клавиатуру с помощью:

self.widthBox.inputView = self.myInputView

Затем открывается представление клавиатуры, как открывается обычная клавиатура iOS.

Проблема в том, что как только я добавляю соединители для кнопок из keypadInputViewController xib в его swift, я получаю сообщение о сбое. Сообщение конкретно ссылается на любые созданные мной связи. "этот класс не соответствует кодированию ключевого значения для ключа"

Xib содержит представление с дюжиной кнопок.

Я дважды проверил ряд пунктов, включая:

  • Владелец файла установлен на keypadInputViewController
  • запустился в Xcode
  • сбросил в симуляторе iOS
  • вручную удаленные производные файлы в библиотеке
  • удалена ссылка и повторно добавлен файл xib и swift в проект
  • удалил все соединения из xib в swift как в разделах владельца файла, так и в разделе просмотра
  • закрыл и снова открыл Xcode
  • пробовал бета 4 для Xcode 6.2
  • Я открыл xcode и создал тестовый проект ios, добавил класс касания какао и использовал флажок создания xib. Тестовый проект терпит неудачу с той же ошибкой, как только я добавляю кнопки.

После довольно долгих поисков я обнаружил, что если не установить для владельца значение self, то кнопки не будут работать. Поэтому я изменил расширение на:

extension UIView {
class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> UIView? {
    return UINib(
        nibName: nibNamed,
        bundle: bundle
        ).instantiateWithOwner(self, options: nil)[0] as? UIView
}}

Я все еще не могу установить представление для владельца файла. Приложение вылетает при компиляции, если розетка подключена, или при нажатии кнопки, если подключено действие, с ошибкой «неопознанный селектор отправлен в класс».

Я не знаю, это я или Xcode. Как мне заставить это представление клавиатуры принимать соединения, чтобы я мог двигаться дальше? Я думаю, что, возможно, я не добавил что-то важное в определения классов или неправильно загружаю этот xib. Идеи?


person SeeBenClick    schedule 24.01.2015    source источник