不允许点“.”在 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

如何检测 QTableView 中的双击

如何在 Swift iOS 中禁用 UITextField 双击或长按? [复制]

如何处理复合组件中子项的双击?