另一个文件中的iOS UITextView委托

另一个文件中的iOS UITextView委托,ios,swift,uitextview,uitextviewdelegate,Ios,Swift,Uitextview,Uitextviewdelegate,下午好 请原谅我的英语 我在尝试将textView的委托分配给另一个类时遇到问题 我有一个CommentsViewController和一个连接到它的故事板中的ViewController 我在ViewController(故事板中)上有一个UITextView元素,还有一个CommentsViewController(称为newCommentTextView)的出口 我已经创建了一个类CommentTextViewDelegate:NSObject,UITextViewDelegate 在Co

下午好

请原谅我的英语

我在尝试将textView的委托分配给另一个类时遇到问题

  • 我有一个CommentsViewController和一个连接到它的故事板中的ViewController
  • 我在ViewController(故事板中)上有一个UITextView元素,还有一个CommentsViewController(称为newCommentTextView)的出口
  • 我已经创建了一个类CommentTextViewDelegate:NSObject,UITextViewDelegate
  • 在CommentsViewController的viewDidLoad中,我已经完成了此操作

    newCommentTextView.delegate = CommentTextViewDelegate()
    
  • 我已经添加了和textViewDidChange,和textViewDidEndEditing,以及u:shouldChangeTextInRange:。但是,当我更改textView的文本时,这些函数都不会被调用

  • 我怎么了?
    谢谢。

    代理是一个弱指针。所以您需要创建CommentTextViewDelegate类的属性,然后按照下面的代码将其分配给文本视图委托。在此之后,无论何时发生任何更改,您都将收到通知

      let textViewDelegate = CommentTextViewDelegate()
      func viewDidLoad() {
      newCommentTextView.delegate = textViewDelegate
      }
    

    newCommentTextView.delegate=CommentTextViewDelegate()
    有错误。在调用viewDidLoad()后,CommentTextViewDelegate的实例已被释放。因此CommentsViewController应该拥有
    CommentTextViewDelegate

    let textViewDelegate = CommentTextViewDelegate()
    func viewDidLoad() {
       newCommentTextView.delegate = textViewDelegate
    }
    

    为什么要在一个控制器中设置一个出口,而在另一个控制器中设置代理?CommentsViewController和ViewController之间的关系是什么?@TonyHan在故事板中,在viewController的标识检查器中,我将类分配给CommentsViewController。@AndréMuniz,因为我需要两种不同类型的委托用于文本视图,并尝试创建一种与当前控制器分离的委托。