应用程序在ios swift中创建自定义文本字段时冻结

时间:2014-12-16 14:47:25

标签: ios objective-c iphone swift

我尝试在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的这三个函数行为,这是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

将委托设置为使用不在子类中的文本字段的视图控制器。

textfield.delegate = self //self == view controller;

请记住将视图控制器注册为委托,并将委托方法添加到视图控制器的实现文件中。

答案 1 :(得分:0)

当我单击textfield应用程序冻结并停止工作时,他的问题仍然存在于Xcode 11.1上,解决方法是:

“硬件->重新启动”

然后正常运行尝试此操作