gpt4 book ai didi

ios - 快速处理文本字段中的测试更改事件

转载 作者:行者123 更新时间:2023-11-28 12:32:18 24 4
gpt4 key购买 nike

我正在构建一个小型 iOS 应用程序,它涉及在 tex 字段中的文本发生变化时执行某些操作。我一直在尝试弄清楚如何编写在测试更改事件发生时调用的特定函数,但这些解决方案都不适合我,我相信它们已经过时了。最流行的解决方案是:

textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

func textFieldDidChange(_ textField: UITextField) {

}

此解决方案发布于此:How do I check when a UITextField changes?

然而,当我尝试在我的代码中实现它时,我收到一条错误消息,指出成员 UITextView 的值没有成员 addTarget。我不确定代码是否有误,或者我是否在错误的地方写了它,我仍在快速学习,所以如果有明显的错误,我很抱歉。这是我的代码:

import UIKit

class JournalEntryViewController: UIViewController
{



override func viewDidLoad() {
super.viewDidLoad()
print(RatingSelection.selectedSegmentIndex)
let date = NSDate()
let calendar = NSCalendar.current
let hour = calendar.component(.hour, from: date as Date)
let minutes = calendar.component(.minute, from: date as Date)
print("minutes: ",minutes)
if (minutes == 16)
{
print("got in!!!")
print(TextField.text)

}


func textFieldDidChange(_ textField: UITextField)
{
print("text changed")

}

// This line is the problem, I'm trying to add a text changed event to TextField
TextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)





// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


@IBOutlet weak var TodaysDate: UILabel!

@IBOutlet weak var RateDayLabel: UILabel!

@IBOutlet weak var RatingSelection: UISegmentedControl!

@IBOutlet weak var TextField: UITextView!

}

编辑:

我试过这样做,这几乎是解决方案的副本,但是当 TextView 中的文本发生变化时,语句仍然没有打印出来

class JournalEntryViewController: UIViewController, UITextViewDelegate
{


override func viewDidLoad()
{

super.viewDidLoad()
self.textField.delegate = self

func textViewDidChange(_ textView: UITextView)
{
print("text changed!!!")
}


}

override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}


@IBOutlet weak var textField: UITextView!

@IBOutlet weak var todaysDate: UILabel!

@IBOutlet weak var rateDayLabel: UILabel!

@IBOutlet weak var ratingSelection: UISegmentedControl!


}

有人可以帮忙吗?

编辑 2:我想出了问题,它不在这段代码中。感谢您的帮助!

最佳答案

您的 TextField 变量(应该是 textField - 对变量使用小写首字母,对类使用大写首字母)是一个 UITextView,而不是 UITextField,因此您正在尝试使用不正确的解决方案。

对于UITextView,您需要实现适当的UITextViewDelegate 方法:

class JournalEntryViewController: UIViewController, UITextViewDelegate
{

override func viewDidLoad()
{
super.viewDidLoad()
self.textField.delegate = self
}

func textViewDidChange(_ textView: UITextView) {
// Do whatever
}
}

关于ios - 快速处理文本字段中的测试更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com