Ios 如何在UITextFieldDelegate中执行不同的检查

Ios 如何在UITextFieldDelegate中执行不同的检查,ios,swift,uitextfield,Ios,Swift,Uitextfield,我试图在UITextFieldDelegate的函数中进行一些检查,但我真的被卡住了。 在一个检查中,我想验证用户是否尝试在UITextfield的前面插入空格,并且不允许他这样做。 在另一个检查中,我想限制用户只为price UITextfield输入数字和标点符号 我在那里检查行吗 这是我的密码: class AdminPanelViewController: UITableViewController { @IBOutlet weak var productNameTextfield:

我试图在UITextFieldDelegate的函数中进行一些检查,但我真的被卡住了。 在一个检查中,我想验证用户是否尝试在UITextfield的前面插入空格,并且不允许他这样做。 在另一个检查中,我想限制用户只为price UITextfield输入数字和标点符号

我在那里检查行吗

这是我的密码:

class AdminPanelViewController: UITableViewController {

@IBOutlet weak var productNameTextfield: UITextField!
@IBOutlet weak var productPriceTextfield: UITextField!

override func viewDidLoad() {
        super.viewDidLoad()

        productPriceTextfield.delegate = self
        productNameTextfield.delegate = self
    }

}

extension AdminPanelViewController: UITextFieldDelegate{

    // Function which allow the user to enter only digits and punctuation for Price textfield
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
    {

        // This is for my Product Name and I want it here also
        if (productNameTextfield!.text != nil){

            if Int(range.location) == 0 && (string == " ") {
                return false
            }
            else{
                return true
            }
        }

        else if (productPriceTextfield!.text != nil) {

            // This is for my price and I need it here
            let allowedCharacters = "0123456789."
            return allowedCharacters.contains(string) || range.length == 1

        }

        return WHAT TO RETURN ???
    }

}

谢谢你的时间

将键盘类型更改为numberPad以获取价格

productPriceTextfield.keyboardType = UIKeyboardType.numberPad
对于空间使用,请按以下方式使用修剪方法:

let str = productNameTextfield!.text
let trimmed = str.trimmingCharacters(in: .whitespacesAndNewlines)

我想你应该检查一下
textField
,看看你有没有合适的,如下所示:

if (textfield == productNameTextfield) {
  // DO STUFF
}

return true
允许编辑任何其他文本字段如果我返回
true
则我的价格文本字段将允许字母。我尝试了。将价格为
productPriceTextfield的文本字段的键盘类型设置为
decimalPad
。键盘类型=.decimalPad
返回的内容应始终为
true
。是的,我将价格文本字段设置为
productPriceTextfield.keyboardType=.numbers和标点符号。但是我在空间方面有问题。