gpt4 book ai didi

ios - 类 func 中的 UITextViewDelegate

转载 作者:行者123 更新时间:2023-11-29 11:42:42 30 4
gpt4 key购买 nike

我正在使用 swift 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")
}
}

在普通的 uiviewcontroller 中,我想在 viewDidLoad 中像这样调用 Assistor 函数:

class InqueryDetailsViewController: UIViewController {
@IBOutlet weak var AnswerTextView:UITextView!
override func viewDidLoad() {
super.viewDidLoad()

Assistor.RegisterTextView(uiview: AnswerTextView)
}
}

很明显,我想从助手而不是 uiviewcontroller 触发 textViewDidBeginEditing。怎么做?

最佳答案

首先你的 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")
}
}

使用它

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)
}
}

希望对你有帮助

关于ios - 类 func 中的 UITextViewDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584358/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com