将 self 分配给 UITextFieldDelegate 在 iOS 8 中而不是在 iOS 7 中工作

Posted

技术标签:

【中文标题】将 self 分配给 UITextFieldDelegate 在 iOS 8 中而不是在 iOS 7 中工作【英文标题】:Assign self to UITextFieldDelegate works in iOS 8 not in iOS 7 【发布时间】:2014-10-18 10:06:42 【问题描述】:

过去我已经多次对 UITableView 和 UICollectonView 进行子类化,其中我将 self 分配给委托和数据源,并且效果很好。

今天我尝试创建UITextField 的子类,并且我将 self 分配给它的代表

self.delegate = self

委托继承自UITextFiled。 在上述情况下,这会在 ios 7 中永远挂起应用程序,但适用于 iOS 8。 另一个令人惊讶的事情是,当我尝试从硬件键盘输入文本时,它可以正常工作,但它会在从屏幕键盘输入字符时挂起。

这可能是什么原因,谁能帮我理解一下?

【问题讨论】:

我很想知道您是否找到了这个问题的答案,甚至可以解决这个问题。我有一个类似的问题,我看到没有人在这篇文章上帮助你。我希望你能明白!这是我的问题:***.com/questions/28241104/… 【参考方案1】:

我遇到了类似的问题,我想通了。默认情况下,模拟器不会再抬起键盘。如果有可用且可检测到的硬件键盘(例如在 MacBook 上),模拟器将寻找其中的输入,而模拟的 iPhone 键盘将不会启动。这使代理出现问题。您所要做的就是在模拟器的硬件菜单中,在键盘下,取消选择“连接硬件键盘”选项。我希望这有帮助。

【讨论】:

以上是关于将 self 分配给 UITextFieldDelegate 在 iOS 8 中而不是在 iOS 7 中工作的主要内容,如果未能解决你的问题,请参考以下文章

将 self 分配给 UITextFieldDelegate 在 iOS 8 中而不是在 iOS 7 中工作

将字典分配给类对象

Swiftui 无法分配给属性:'self' 是不可变的错误

将本地变量分配给属性时的内存泄漏弧

如何将按键分配给在循环中创建的 QPushButton

无法分配给属性:“self”在 UIViewControllerRepresentable 中是不可变的