我尝试在swift iOS中开发自定义文本框,在输入2个字母后它会冻结
class TextField: UITextField , UITextFieldDelegate {
let inset: CGFloat = 10
let radius: CGFloat = 2
let borderWidth: CGFloat = 1
override init() {
super.init()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.borderWidth = borderWidth
//self.layer.borderColor = UIColor(netHex:0xe5e5e5).CGColor
self.layer.cornerRadius = radius
self.delegate = self
}
// placeholder position
override func textRectForBounds(bounds: CGRect) -> CGRect {
return CGRectInset(bounds , inset , inset)
}
// text position
override func editingRectForBounds(bounds: CGRect) -> CGRect {
return CGRectInset(bounds , inset , inset)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
这是代码,我找到了一些答案,说将文本域的委托设置为自己不是一个好主意,但他们并没有说出什么是好主意。你能帮我解决这个问题吗?
我需要所有textFields的这三个函数行为,这是正确的方法吗?
答案 0 :(得分:0)
将委托设置为使用不在子类中的文本字段的视图控制器。
textfield.delegate = self //self == view controller;
请记住将视图控制器注册为委托,并将委托方法添加到视图控制器的实现文件中。
答案 1 :(得分:0)
当我单击textfield应用程序冻结并停止工作时,他的问题仍然存在于Xcode 11.1上,解决方法是:
“硬件->重新启动”
然后正常运行尝试此操作