iOS UITextView委托在另一个文件中

时间:2016-08-17 12:59:16

标签: ios swift uitextview uitextviewdelegate

下午好!

对不起我的英语。

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

  1. 我在一个与它连接的storyBoard中有一个CommentsViewController和一个ViewController。
  2. 我在ViewController上有一个UITextView元素(在storyBoard中)和一个到ViewsViewController的插座(名为newCommentTextView)。
  3. 我创建了一个类CommentTextViewDelegate:NSObject,UITextViewDelegate。
  4. 在CommentsViewController的viewDidLoad中,我已经完成了这个

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

  6. 我有什么问题? 谢谢。

2 个答案:

答案 0 :(得分:2)

newCommentTextView.delegate = CommentTextViewDelegate()有一个错误。在调用viewDidLoad()之后,CommentTextViewDelegate的实例已经被释放。所以CommentsViewController应该拥有CommentTextViewDelegate

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

答案 1 :(得分:1)

委托是一个弱指针。因此,您需要使用CommentTextViewDelegate类的属性,然后根据下面的代码将其分配给文本视图委托。在此之后,只要发生任何变化,您就会收到通知。

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