自定义input视图作为Swift中使用OSX 10.9和Xcode 6.1.1 +的文本字段的键盘
加载自定义input视图键盘后,我无法连接button。 我的主屏幕是故事板,我的自定义视图是一个xib。
input视图是文件所有者指向它的swift类的一个笔尖。 我使用下面的代码在另一个视图控制器中加载input视图:
extension UIView { class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> UIView? { return UINib( nibName: nibNamed, bundle: bundle ).instantiateWithOwner(nil, options: nil)[0] as? UIView } }
在主视图控制器里面,我正在创buildinput视图:
var myInputView = UIView.loadFromNibNamed("keypadInputViewController", bundle: nil)
keypadInputViewController是xib的基名,swift文件和swift文件中的类名。
我附上这个键盘使用:
self.widthBox.inputView = self.myInputView
键盘视图然后打开作为一个普通的ios键盘打开
问题是,一旦我添加键盘连接器从键盘input控制器xib到它的迅速我会得到崩溃消息。 该消息特别引用了我创build的任何连接。 “这个类不是关键的编码密钥值”
xib包含一个十几个button的视图。
我已经仔细检查了一些项目,包括:
- 文件所有者被设置为keypadInputViewController
- 在Xcode中运行干净
- 在iOS模拟器中运行重置
- 在库中手动删除派生文件
- 删除引用并重新添加xib和swift文件到项目中
- 在文件所有者和视图部分删除了xib到swift的所有连接
- closures并重新打开Xcode
- 尝试了Xcode 6.2的beta 4
- 我打开xcode并创build了一个testingios项目,添加了一个cocoa触摸类,并使用了创buildxibcheckbox。 一旦添加button连接,testing项目就会失败,并出现相同的错误。
search了很长时间后,我发现不把自己设置为自己不会允许button连接function。 所以我把扩展名改为:
extension UIView { class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> UIView? { return UINib( nibName: nibNamed, bundle: bundle ).instantiateWithOwner(self, options: nil)[0] as? UIView }}
我仍然无法将视图设置为文件所有者。 应用程序在编译时崩溃,如果连接了一个sockets,或者在button按下时,如果连接了一个动作,错误为“无法识别的select器发送到类”
我不知道这是我还是Xcode。 我怎样才能让这个键盘视图接受连接,所以我可以继续前进? 我想也许我没有添加一些重要的类定义或不正确加载这个xib。 想法?