UItextView 委托 swift - textViewDidBeginEditing 未调用
Posted
技术标签:
【中文标题】UItextView 委托 swift - textViewDidBeginEditing 未调用【英文标题】:UItextView delegate swift - textViewDidBeginEditing not called 【发布时间】: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
在类外声明?这不是你应该做的。
【参考方案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 也可能存在问题,例如错误,在重新启动后解决。谢谢!以上是关于UItextView 委托 swift - textViewDidBeginEditing 未调用的主要内容,如果未能解决你的问题,请参考以下文章
Swift:检测用户编辑的热点已在 UITextView 中停止