【发布时间】:2015-08-12 13:58:28
【问题描述】:
我对 Swift 编程非常陌生,我想了解为什么我不能让自定义 UIView 类也充当 TextFields 的委托。我已经转换了适用于 ViewController 的代码,但运气不佳。 错误是: 致命错误:在展开可选值时意外发现 nil 由以下行生成:textField.delegate = self
代码如下:
import UIKit
class ViewClass: UIView, UITextFieldDelegate {
var textItems = [UITextInput]()
var myKB = UIToolbar()
var txtActive = 0
@IBOutlet weak var textField: UITextField!
required init?(coder decoder: NSCoder) {
super.init(coder: decoder)
textField.delegate = self
}
// UITextField Delegates
func textFieldDidBeginEditing(textField: UITextField) {
print("TextField did begin editing method called")
}
func textFieldDidEndEditing(textField: UITextField) {
print("TextField did end editing method called")
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
print("TextField should begin editing method called")
return true;
}
func textFieldShouldClear(textField: UITextField) -> Bool {
print("TextField should clear method called")
return true;
}
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
print("TextField should snd editing method called")
return true;
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
print("While entering the characters this method gets called")
return true;
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
print("TextField should return method called")
textField.resignFirstResponder();
return true;
}
}
这是不可能的,还是我错过/误解了一些基本的东西??
【问题讨论】:
-
可以的。它可能不应该。
-
我很确定问题出在您的
textField上。由于某种原因,它没有正确加载。如果你在那里放一个if检查并检查为零,或者只是在那里放一个断点,你可以证实我的怀疑。 -
正确!文本字段为零。 @duncan-c 建议的 awakeFromNib() 解决了这个问题。但是,在查看了 cmets 之后,似乎我最好将代码放在 View Controller 中
标签: ios swift uiview uitextfield uikit