我试图限制 3 个不同的文本字段,以便您只能在其中输入数字,并且您可以输入的位数也受到限制。
这是我的代码:
import Foundation
import UIKit
import Darwin
class View3on3 : UIViewController, UITextFieldDelegate {
@IBOutlet weak var APTeams: UITextField!
@IBOutlet weak var APRounds: UITextField!
@IBOutlet weak var APBreakers: UITextField!
override func viewDidLoad()
{
super.viewDidLoad()
initializeTextFields()
}
func initializeTextFields()
{
APTeams.delegate = self
APTeams.keyboardType = UIKeyboardType.NumberPad
APRounds.delegate = self
APRounds.keyboardType = UIKeyboardType.NumberPad
APBreakers.delegate = self
APBreakers.keyboardType = UIKeyboardType.NumberPad
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
@IBAction func userTappedBackground(sender: AnyObject)
{
view.endEditing(true)
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if string.characters.count == 0 {
return true
}
let prospectiveText = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: String())
switch textField {
case APTeams:
return prospectiveText.containsOnlyCharactersIn("0123456789") && count(prospectiveText) <= 3
case APRounds:
return prospectiveText.containsOnlyCharactersIn("0123456789") && count(prospectiveText) <= 1
case APBreakers:
return prospectiveText.containsOnlyCharactersIn("0123456789") && count(prospectiveText) <= 3
default:
return true
}
}
}
它在这一行抛出错误:
let prospectiveText = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: String())
这么说 '字符串?'不可转换为 NSString
我按照这个网站上的教程进行操作: http://www.globalnerdy.com/2015/04/27/how-to-program-an-ios-text-field-that-takes-only-numeric-input-or-specific-characters-with-a-maximum-length/
我做错了什么?
PS。调用 NumberPad 的代码工作正常。当我删除限制位数的代码时,它工作正常。最佳答案
或者您可以尝试一下,创建一个方法并在 View 加载时调用它:
func initializeTextFields({
digitsOnlyTextField.delegate = self
digitsOnlyTextField.keyboardType = UIKeyboardType.ASCIICapable
然后,您可以对文本字段进行硬编码,如下所示:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String)
-> Bool {
case digitsOnlyTextField:
return prospectiveText.containsOnlyCharactersIn("012346789")
尝试一下并向我提供一些反馈,祝你好运!
关于ios - 将文本字段输入限制为设定长度的数字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31552674/