【问题标题】:UITextView delegate methods not called未调用 UITextView 委托方法
【发布时间】:2019-01-04 02:52:16
【问题描述】:

这里是 Swift 初学者。我很难让我的UITextView 委托方法调用。我查看了许多其他问题,但无济于事。

我在ViewConroller 中设置了UITextView。它看起来像这样:

UITextView的正上方有一个UIImageView,一切都被包裹在一个导航控制器中,应该没什么大不了的。

我确保将情节提要中的视图连接到我的ViewController

从情节提要中,我 CTRL+拖动 UITextView 就在类声明的正下方。这会产生一行:

@IBOutlet weak var Description: UITextView!

类声明:

class ImageTextViewController: UIViewController, UITextViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

(我的NavigationControllerUIImageView 需要其他代表)

然后我这样声明委托:

override func viewDidLoad() {
    super.viewDidLoad()

    self.Description.delegate = self

现在,当我完成对UITextView 的编辑时,应该调用以下委托方法。但由于某种原因,它没有开火!

private func textViewDidEndEditing(_ textView: UITextView) -> Bool{
    print("we are done editing")
    spotDescription.resignFirstResponder()
    return true
}

如何让我的UITextView 正确触发?

【问题讨论】:

  • 您的故事板连接是TextImageViewController,您正在写入ImageTextViewController

标签: ios swift delegates uitextview


【解决方案1】:

textViewDidEndEditing 方法没有返回值。你必须写这个

func textViewDidEndEditing(_ textView: UITextView) {
    print("we are done editing")
}

【讨论】:

    【解决方案2】:

    杰克是对的。 在标题为Storyboard Connection 的图像中,您的viewController 似乎标题为TextImageViewController,而在类声明示例中标题为ImageTextViewController

    Storyboard 中的 ViewController 和 ViewController 应该是一样的。

    Андрей 也是对的。 TextViewDidEndEditing 方法没有返回值。

    lindanordstrom 也提出了一个很好的观点: TextViewDidEndEditing 不应该是私有的。

    【讨论】:

    • 是的,TextViewDidEndEditing 也不应该是私有的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2011-08-12
    相关资源
    最近更新 更多