占位符检查在某些情况下有效,并且在某些情况下不会
问题描述:
我正在制作一些应用程序(图灵机模拟器),并且我的FirstViewControler中有几个文本框。我已经把它作为这些textFields的委托,我通过检查它们的占位符文本来区分它们,就像你可以从代码中看到的一样。它是好的,并与这些底部textfields(见图)进入功能进入tableview,但当我添加SegmentedView和TextField在顶部,我想立即更新分段视图作为人在字段中键入,它不知道承认那个textField的占位符(“0.”被添加了jut来测试它,它是“在这里输入数字”)。占位符检查在某些情况下有效,并且在某些情况下不会
所以总之,那些前5个ifs正在工作,并且他们的工作,但最后一个与==“0”。检查 - 不工作,我不明白为什么。
This is my storyboard and document outline
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if string.characters.count > 0 {
// za prvi: 0..9
if textField.placeholder == "0..9" {
switch string {
case "0": return true
case "1": return true
case "2": return true
case "3": return true
case "4": return true
case "5": return true
case "6": return true
case "7": return true
case "8": return true
case "9": return true
default: return false
}
}
// za drugi
else if textField.placeholder == "0/1/b" {
switch string {
case "0": return true
case "1": return true
case "b": return true
default: return false
}
}
// za treci
else if textField.placeholder == "0..9/+/-" {
switch string {
case "0": return true
case "1": return true
case "2": return true
case "3": return true
case "4": return true
case "5": return true
case "6": return true
case "7": return true
case "8": return true
case "9": return true
case "+": return true
case "-": return true
default: return false
}
}
// za cetvrti
else if textField.placeholder == "0/1/b " {
switch string {
case "0": return true
case "1": return true
case "b": return true
default: return false
}
}
// za peti
else if textField.placeholder == "+/-" {
switch string {
case "+": return true
case "-": return true
default: return false
}
}
else if textField.placeholder == "0." {
if ((string == "0") || (string == "1")) {
traka.append(Character(string))
osveziTraku()
return true
}
else {
return false
}
}
else {
return true
}
}
else {
return true
}
}
答
我看不出你的代码中的任何问题,我只是重构它一下,它可能会解决你的问题。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if string.characters.count > 0 {
switch textField.placeholder
{
case "0..9", "0..9/+/-", "+/-", "0/1/b" :
switch string {
case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "b": return true
default: return false
}
case "0." :
switch string {
case "0", "1":
traka.append(Character(string))
osveziTraku()
return true
default: return false
}
default : return false
}
}
else
{
return false
}
}