我使用的是斯威夫特3,我有一个课程如下:
class Assistor : NSObject , UITextViewDelegate {
private override init() {
}
class func RegisterTextView(uiview:UIView) {
if let RegisteredView = uiview as? UITextView {
RegisteredView.delegate = self as! UITextViewDelegate
}
}
func textViewDidBeginEditing(_ textView: UITextView) {
print("Begin")
}
func textViewDidEndEditing(_ textView: UITextView) {
print("End")
}
}在普通的uiview控制器中,我想在viewDidLoad中调用像这样的助手函数:
class InqueryDetailsViewController: UIViewController {
@IBOutlet weak var AnswerTextView:UITextView!
override func viewDidLoad() {
super.viewDidLoad()
Assistor.RegisterTextView(uiview: AnswerTextView)
}
}显然,我希望从助手而不是从trigger控制器触发textViewDidBeginEditing。怎么做?
发布于 2017-08-09 07:53:55
首先,必须将您的Assistor声明为对象,如果只需要一个对象,则需要将init更改为public,并将registerTextView更改为实例方法。
尝试使用这个
class Assistor : NSObject , UITextViewDelegate {
//Singleton
static let sharedInstance: Assistor = Assistor()
override init() {
super.init()
}
func registerTextView(uiview:UIView) {
if let RegisteredView = uiview as? UITextView {
RegisteredView.delegate = self as! UITextViewDelegate
}
}
func textViewDidBeginEditing(_ textView: UITextView) {
print("Begin")
}
func textViewDidEndEditing(_ textView: UITextView) {
print("End")
}
}使用it
class ViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
var assistor : Assistor = Assistor()
override func viewDidLoad() {
super.viewDidLoad()
self.assistor.registerTextView(uiview: self.textView)
//using as singleton
//Assistor.sharedInstance.registerTextView(uiview: self.textView)
}
}希望这能有所帮助
https://stackoverflow.com/questions/45584358
复制相似问题