我有一个基本的聊天应用程序,我想要它,以便当inputTextField.text == nil时,没有任何信息从textField发送。我尝试的解决方案是在inputTextField.text == nil时禁用该按钮,但事实证明这是徒劳的。下面是按钮的实例化和处理发送的函数。 我已经包含了一个构建的屏幕截图,它显示了inputTextField.text == nil时的样子。
我不想要显示聊天气泡。
有什么建议吗?
lazy var sendButton: UIButton = {
let button = UIButton(type: .system)
button.setTitle("Send", for: UIControlState())
let titleColor = UIColor(red: 0, green: 137/255, blue: 249/255, alpha: 1)
button.setTitleColor(titleColor, for: UIControlState())
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
button.addTarget(self, action: #selector(handleSend), for: .touchUpInside)
return button
}()
func handleSend(){
print(inputTextField)
let delegate = UIApplication.shared.delegate as! AppDelegate
let context = delegate.managedObjectContext
if inputTextField.text == nil {
sendButton.isEnabled = false
}else{
FriendsController.createMessageWithText(inputTextField.text!, friend: friend!, minutesAgo: 0, context: context, isSender: true)
}
do{
try context.save()
inputTextField.text = nil
}catch let err {
print(err)
}
}
答案 0 :(得分:1)
您可以检查handleSend()函数上的textfield是否为空。这将修剪输入字符串之前和之后的额外空格
let inputString = inputTextField.text
if(inputString.trimmingCharacters
(in:CharacterSet.whitespacesAndNewlines) ?? "").isEmpty {
print("String is nil or empty")
}else {
//do your code for sending the data
}
答案 1 :(得分:0)
根据我的说法,这不是什么大问题。您只需检查inputTextField.text ==""。只要没有文字,您的要求就会被填满。 希望它会对你有所帮助。
答案 2 :(得分:0)
您可以使用Editing Changed
的已发送事件UITextField
来实现这一目标。
@IBAction func textFieldDidChanged(_ sender: UITextField) {
if sender.text == "" {
sendButton.isEnabled = false
} else {
sendButton.isEnabled = true
}
}
希望这有帮助。
答案 3 :(得分:0)
如果输入文本字段中没有文本,这并不意味着它是nil,只是空白,您可以检查textfield.text.characters.count并查看大于0
答案 4 :(得分:0)
请设置UITextField Delegate方法shouldChangeCharactersInRange,您可以在没有文本时处理,然后禁用并启用
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool{
if textField.text?.characters.count == 0{
sendButton.isEnabled = false
}else{
sendButton.isEnabled = true
}
return true
}
我希望它为你工作!。