不允许点“.”在 UITextField 的双击空格键上
Posted
技术标签:
【中文标题】不允许点“.”在 UITextField 的双击空格键上【英文标题】:Not allow dot "." on double tap spacebar for UITextField 【发布时间】:2016-06-23 05:36:36 【问题描述】:我在我的应用程序中遇到的问题是,当我按空格键两次时,“。”(点)被添加到 TextField 中。我不想让点“。”在双击空格键上。
注意:我知道这是 ios 中 textField 的默认行为。
我参考了较早的答案iPhone: Disable the "double-tap spacebar for ." shortcut?,但它适用于 textView,而不适用于 textField。
我没有得到替换这条线
textView.selectedRange = NSMakeRange(range.location + 1, 0)
【问题讨论】:
iPhone: Disable the "double-tap spacebar for ." shortcut?的可能重复 @Vishnugondlekar 如果你能提供我的文本字段版本,那会很有帮助。 【参考方案1】:我有同样的问题,然后使用下面的委托方法,它已解决,使用此代码文本字段中不显示的点,
快速代码:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) as? NSString
let arrayOfString = newString?.componentsSeparatedByString(".");
if arrayOfString?.count > 1
return false
return true
目标C代码:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
NSString *newString1 = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *arrayOfString1 = [newString1 componentsSeparatedByString:@"."];
if ([arrayOfString1 count] > 1 )
return NO;
return YES;
它对我有用,希望它有帮助
【讨论】:
请仅用快速答案回答快速问题。 func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool var newString1: String = textField.text!.stringByReplacingCharactersInRange(range, withString: string) var arrayOfString1: [AnyObject] = newString1.componentsSeparatedByString(".") if arrayOfString1.count > 1 return false return true 只需使用转换器检查它(objective c -swift)objectivec2swift.com/#/home/converter ok 但是它的代码总是不正确,在xcode中检查你上面的代码,它的显示范围错误。【参考方案2】:斯威夫特 4
final class RestrictedDoubleSpaceDotTextField: UITextField
override func awakeFromNib()
super.awakeFromNib()
addTarget(self, action: #selector(didChangeText), for: .editingChanged)
@objc private func didChangeText()
let textWithoutDot = text?.replacingOccurrences(of: ".", with: " ", options: .literal, range: nil)
text = textWithoutDot
【讨论】:
【参考方案3】:从模拟器/iPhone 更改键盘设置。
在 iPhone 设置 -> 通用 -> 键盘 -> (关闭)“。”快捷方式
【讨论】:
【参考方案4】:func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
if (string == ". ")
return false
else
return true
【讨论】:
我的问题是关于双击空格键 这样不行,一次输入一个字符以上是关于不允许点“.”在 UITextField 的双击空格键上的主要内容,如果未能解决你的问题,请参考以下文章
带有 PickerView 的 UITextField:不允许编辑
iOS UIWebview,禁用双击,允许点击 WKWebview