【问题标题】:UITextField inputView - IBActions not firedUITextField inputView - IBActions 未触发
【发布时间】:2015-10-26 20:11:34
【问题描述】:

我想用自定义键盘替换 UITextField 的默认键盘。因此,我使用 xib 文件创建了 UIViewController 的新子类(另一种方式,例如分别创建两个文件并设置文件的所有者也不起作用)。

然后我向 KeyboardView 添加了一个按钮并将其连接到 IBAction。之后,我将文本字段 inputView 设置为新视图,如下所示:

override func viewDidLoad() {
    let keyboardVC = KeyboardViewController()
    textField.inputView = keyboardVC.view
    keyboardVC.view.autoresizingMask = .FlexibleHeight
    keyboardVC.delegate = textField
}

它正在工作并且显示自定义键盘,但是如果我触摸按钮,则不会调用 IBAction。我的设置有什么问题? (我检查了一些示例,它们都以相同的方式进行操作)。

更新:

我现在删除了 ViewController 并将 UIView 子类化。现在这些行动正在发挥作用。为什么它不能与 ViewController 一起使用?

【问题讨论】:

    标签: ios swift uitextfield


    【解决方案1】:

    由于没有人持有UIViewController- 在viewDidLoad() 结束后没有对它的引用,它从内存中释放。 当按下按钮时,应该响应该操作的视图控制器不存在 -> 您只持有视图控制器的视图作为textField.inputView。

    【讨论】:

    • 这就是我在 stackoverflow 上阅读了一些类似线程后的假设。但是:为什么没有exc_bad_access? (只是为了我的理解)(并感谢您的回答)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多