【发布时间】:2016-10-29 10:22:47
【问题描述】:
我有 inputAccessoryView 覆盖了自定义 UITextView 的 UIViewController,让我们调用该视图控制器 A。我还有另一个视图控制器将 A 推送到导航堆栈。
所以,当我第一次按 A 时,一切正常 - UITextView 立即出现文字。奇怪的是从下一次推送开始 - UITextView 的文本直到视图控制器推送过渡动画结束才出现。
viewController A的代码在那里:
class NextViewController: UIViewController {
private var userInputView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.grayColor()
let textView = UITextView(frame: CGRect(origin: .zero,
size: CGSize(width: 200, height: 30)
), textContainer: nil)
textView.text = "asd"
userInputView = textView
}
override var inputAccessoryView: UIView? {
return userInputView
}
override func canBecomeFirstResponder() -> Bool {
return true
}
}
在 iOS 9.3 模拟器中测试。
经过一些编码后,我注意到如果inputAccessoryView 未被释放(存储在全局范围内的某个位置),动画期间的外观由最后一个实际上是可以的。但是有没有类似原生的解决方案,我错过了什么吗?因为在我看来,期望的行为是相当标准的。UITextView 状态定义。但是这个解决方案对我不好
【问题讨论】: