始终将输入(强制)转换为小写或大写 - iOS Swift

3
如何在Swift语言中强制某些文本字段始终输入小写字母或大写字母?

混合大小写


5
可能是重复的问题:iPhone强制文本框输入为大写 - Shamas S
此解决方案适用于Swift语言,不适用于Objective-C。 - fatihyildizhan
接受的答案可以在Swift中无问题使用。 - SwiftStudier
2
这是一个有效的问题,我不明白为什么会被踩。如果已经有人问过了,它可以被标记为重复。 - Stephen
2个回答

10

由于您已经更新了文本字段,所以在if块中应该返回false

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
  if textField.isEqual(textFieldBodrum) {
     textFieldBodrum.text = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string.lowercaseString)
     return false
  } else if textField.isEqual(textFieldYalikavak) {
                textFieldYalikavak.text = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string.uppercaseString)
    return false
  }
   return true
}
如果您不想影响其他的文本字段,您应该在 shouldChangeCharactersInRange function 的末尾 return truehttps://gist.github.com/fatihyildizhan/ac5f476aebd306b0580a1fa069f153a3

Swift 4.2中该方法已更改为:yourTextField.text = (textField.text! as NSString).replacingCharacters(in: range, with: string.lowercased())。 - Lance Samaria
1
被接受的答案有效,但导致了一个意想不到的问题,即我添加到 .editingChanged 的目标方法未触发。答案是在单独的 .editingChanged 方法中将任何大写字母更改为小写字母。请查看 @LeoDabus 在此处的答案 stackoverflow.com/a/54926833/4833705 - Lance Samaria

8

最简单的解决方案是将文本字段的autocapitalizationType属性设置为.None,以默认为小写输入,或者设置为.AllCharacters,以默认为大写输入。用户仍然可以使用Shift键改变大小写。


1
你是对的,但我想强制要求输入小写或大写字母。 - fatihyildizhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接