textViewDidChange 函数没有响应
textViewDidChange function not responding
我正在尝试编写 Swift 代码来在每次用户键入任何文本时更改 UITextView
中的背景颜色。我已经委托了我的 UITextView
并添加了 textViewDidChange
:
extension DocumentViewController: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
let currentText = self.textView.text
var seed = 0
if currentText != self.textView.text {
let myNum = seed%4
let myColor = colorPicker(num: myNum)
self.textView.backgroundColor = myColor
seed += 1
}
}
func colorPicker(num: Int) -> UIColor {
let colors = [UIColor.red, UIColor.blue, UIColor.green, UIColor.purple]
return colors[Int(num)]
}
}
这段代码对我来说似乎合乎逻辑,Xcode 没有给我任何错误,但是,当我 运行 程序时,我没有得到想要的结果。
为了进一步测试我的功能,我尝试打印我的变量 seed
并且值递增 1。但是,该值保持在 1,并且不会像我想象的那样在每次键入时继续递增,我的输出如下所示:
1
1
1
1
1
1
1
我还尝试在我的 DocumentViewController
class 中添加 var seed = 0
并将我的调用更改为 textViewDidChange
中的 self.seed
这样:
func textViewDidChange(_ textView: UITextView) {
let currentText = self.textView.text
if currentText != self.textView.text {
let myNum = self.seed % 4
let myColor = colorPicker(num: myNum)
self.textView.backgroundColor = myColor
self.seed += 1
}
}
但是种子不会更新甚至打印。
总之,我的 textViewDidChange 没有响应任何进一步的更改。关于这个问题可能是什么的任何想法?
如果as
控件永远不会进入
if currentText != self.textView.text
等于
if self.textView.text != self.textView.text
这是错误的
//
在 class DocumentViewController
中将 seed 声明为实例变量
var seed = 0
var oldText = ""
//
func textViewDidChange(_ textView: UITextView) {
if oldText != self.textView.text! {
let myNum = seed%4
let myColor = colorPicker(num: myNum)
self.textView.backgroundColor = myColor
seed += 1
oldText = self.textView.text!
}
}
//
还有一件事要提,如果用户编辑它,则不需要 oldText var,因为文本将始终保留新的更改,如果您从不知道内容的服务器调用中设置它,那么离开它
我正在尝试编写 Swift 代码来在每次用户键入任何文本时更改 UITextView
中的背景颜色。我已经委托了我的 UITextView
并添加了 textViewDidChange
:
extension DocumentViewController: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
let currentText = self.textView.text
var seed = 0
if currentText != self.textView.text {
let myNum = seed%4
let myColor = colorPicker(num: myNum)
self.textView.backgroundColor = myColor
seed += 1
}
}
func colorPicker(num: Int) -> UIColor {
let colors = [UIColor.red, UIColor.blue, UIColor.green, UIColor.purple]
return colors[Int(num)]
}
}
这段代码对我来说似乎合乎逻辑,Xcode 没有给我任何错误,但是,当我 运行 程序时,我没有得到想要的结果。
为了进一步测试我的功能,我尝试打印我的变量 seed
并且值递增 1。但是,该值保持在 1,并且不会像我想象的那样在每次键入时继续递增,我的输出如下所示:
1
1
1
1
1
1
1
我还尝试在我的 DocumentViewController
class 中添加 var seed = 0
并将我的调用更改为 textViewDidChange
中的 self.seed
这样:
func textViewDidChange(_ textView: UITextView) {
let currentText = self.textView.text
if currentText != self.textView.text {
let myNum = self.seed % 4
let myColor = colorPicker(num: myNum)
self.textView.backgroundColor = myColor
self.seed += 1
}
}
但是种子不会更新甚至打印。
总之,我的 textViewDidChange 没有响应任何进一步的更改。关于这个问题可能是什么的任何想法?
如果as
控件永远不会进入if currentText != self.textView.text
等于
if self.textView.text != self.textView.text
这是错误的
//
在 class DocumentViewController
var seed = 0
var oldText = ""
//
func textViewDidChange(_ textView: UITextView) {
if oldText != self.textView.text! {
let myNum = seed%4
let myColor = colorPicker(num: myNum)
self.textView.backgroundColor = myColor
seed += 1
oldText = self.textView.text!
}
}
//
还有一件事要提,如果用户编辑它,则不需要 oldText var,因为文本将始终保留新的更改,如果您从不知道内容的服务器调用中设置它,那么离开它