JAL*_*JAL 0 uitextview iboutlet becomefirstresponder ios swift
我有一个自定义UItextView子类,我覆盖canBecomeFirstResponder():
class MyTextView: UITextView {
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}
*/
override func canBecomeFirstResponder() -> Bool {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
我这样做是为了允许数据检测链接(电话号码是URL)在一个UITextView功能中,而视图中没有任何其他文本是可选择的,但这与问题无关.
canBecomeFirstResponder()是我想要覆盖的唯一属性/方法,因此子类化似乎有点过分.我将此自定义类与使用Interface Builder创建的视图一起使用.有没有办法可以懒惰地覆盖UIKit对象属性的IBOutlet?像这样的东西:
@IBOutlet weak var contactTextView: UITextView! {
override func canBecomeFirstResponder: Bool = {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
我不想使用扩展,UITextView因为我只想覆盖canBecomeFirstResponder()特定的UITextView,而不是我的项目中使用的每一个.
如果要覆盖,则必须子类化.这两个概念是相互关联的.没有子类化就无法覆盖.
你的"喜欢这个"的想法不适用于任何语言.基本上,您正在描述一个Java中可用的匿名子类(不在Swift中).但是,这必须在类实例化期间使用,而不是在声明变量时使用.
当然,您可以canBecomeFirstResponder通过返回的方法来调整false,didSet但这比子类化要复杂得多.
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |