【问题标题】:UItextView delegate swift - textViewDidBeginEditing not calledUItextView 委托 swift - textViewDidBeginEditing 未调用
【发布时间】:2017-06-01 14:14:43
【问题描述】:

我已经看到处理UITextView 委托的其他主题,但似乎无法找到我的问题来自哪里。 这是我的代码,但是当我修改我的UITextView 时,什么也没有发生,也没有调用textViewDidBeginEditing

import UIKit
var textView1 = UITextView()

class ViewController: UIViewController, UITextViewDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()

        textView1.delegate = self
        textView1 = UITextView(frame: CGRect(x:24,y: 100,width: 340,height: 290))
        textView1.textColor = UIColor.black
        textView1.backgroundColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.00)
        textView1.text = "textView 1"
        view.addSubview(textView1)
    }

    func textViewDidBeginEditing(_ textView: UITextView) {
        print("print1")
    }

    func textViewDidEndEditing(_ textView: UITextView) { 
        print("print2")
    }
}

我已尝试使用 UITextField,但没有任何改变,委托函数仍未调用。

【问题讨论】:

  • 为什么要创建然后丢弃第一个UITextView 实例?
  • 为什么textView1在类外声明?这不是你应该做的。

标签: ios swift uikit uitextview


【解决方案1】:

只需将您的 textView1.delegate = self 向下移动 2 行。您正在为 UITextField 设置委托,但在下一行中,您正在创建没有任何委托的新对象;)

【讨论】:

  • 没有改变任何东西:/
【解决方案2】:

你正在从一个 nil 对象设置一个值,你必须初始化它,然后你可以设置目标委托。

【讨论】:

  • 可能是因为你初始化了两次。
  • 我在哪里进行了第二次初始化?我试图只保留 let textView1 = UITextView(frame: CGRect(x:24,y: 100,width: 340,height: 290)) 但它是一样的。
  • 我建议你这样做: textView1.frame = CGRect(x:24,y: 100,width: 340,height: 290) textView1.delegate = self textView1.textColor = UIColor.black textView1.backgroundColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.00) textView1.text = "textView 1" view.addSubview(textView1)
  • 哦,那么它来自我......也许是因为我有 8.2 版本。
  • 我不这么认为@VH24
【解决方案3】:

请用下一行更改textView1.delegate = self的位置。

【讨论】:

  • 我用你的代码更改了我的代码,然后运行该应用程序。我更改了 textView1 的文本,但输出区域没有打印任何内容。这肯定很简单,但我真的被这个问题困住了。。
  • 1) 发布实际代码,而不是图片。图片不能被引用或搜索。 2)这个答案如何改进其他已经表明需要移动textView1.delegate = self 行的先前答案?
【解决方案4】:

请尝试使用此代码

导入 UIKit

类 ViewController: UIViewController, UITextViewDelegate {

var textView1 = UITextView()
override func viewDidLoad() {
    super.viewDidLoad()
    textView1 = UITextView(frame: CGRect(x:24,y: 100,width: 340,height: 290))
    textView1.delegate = self

    textView1.textColor = UIColor.black
    textView1.backgroundColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.00)
    textView1.text = "textView 1"
    view.addSubview(textView1)
}

func textViewDidBeginEditing(_ textView: UITextView) {
    print("print1")
}

func textViewDidEndEditing(_ textView: UITextView) { 
    print("print2")
}

}

【讨论】:

  • “请尝试”不是一个有用的描述。清楚地说明问题所在以及您的回答如何解决问题。
  • 重新启动计算机并将 textView1.delegate = self 的位置更改为下一行后,问题解决了。 xcode 也可能存在问题,例如错误,在重新启动后解决。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
相关资源
最近更新 更多