在textField中处理没有文本(swift 3)

时间:2017-03-17 03:42:07

标签: ios swift core-data uibutton

我有一个基本的聊天应用程序,我想要它,以便当inputTextField.text == nil时,没有任何信息从textField发送。我尝试的解决方案是在inputTextField.text == nil时禁用该按钮,但事实证明这是徒劳的。下面是按钮的实例化和处理发送的函数。 我已经包含了一个构建的屏幕截图,它显示了inputTextField.text == nil时的样子。

screenshot

我不想要显示聊天气泡。

有什么建议吗?

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)
    }

}

5 个答案:

答案 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
}

我希望它为你工作!。