是否可以知道用户是否在文本字段中输入或删除字符?

Posted

技术标签:

【中文标题】是否可以知道用户是否在文本字段中输入或删除字符?【英文标题】:is it possible to know if user is typing or deleting characters in a textfield? 【发布时间】:2011-03-04 05:38:35 【问题描述】:

我正在使用文本字段委托方法“shouldChangeCharactersInRange”,我想知道是否有任何方法可以判断用户是在删除字符还是在输入字符?有人知道吗? 谢谢。

【问题讨论】:

【参考方案1】:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

    if (range.length > 0)
    
         // We're deleting
    
    else
    
        // We're adding
    

【讨论】:

好主意,但删除后我无法获得字符数,所以我跳到@Ishu 回答,谢谢【参考方案2】:

逻辑: 要查找删除,您需要在每个字母类型之后构建一个字符串,然后您可以检查每个更改,如果该字符串是 buid 字符串的子字符串,那么这意味着用户删除最后一个字母,如果构建字符串是 textField 文本的子字符串,那么用户添加一封信。

您可以使用与此逻辑一起使用的委托方法,也可以使用通知

您可以使用此通知来查找任何类型的更改

viewDidLoad中添加这些行

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

    [notificationCenter addObserver:self
                           selector:@selector (handle_TextFieldTextChanged:)
                               name:UITextFieldTextDidChangeNotification
                             object:yourTextField];

制作这个功能

- (void) handle_TextFieldTextChanged:(id)notification 

  //you can implement logic here.
    if([yourTextField.text isEqulatToString:@""])
       
        //your code
    


【讨论】:

【参考方案3】:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    if (newLength > [textField.text length])
      // Characters added
    else
      // Characters deleted
    return YES;

【讨论】:

以上是关于是否可以知道用户是否在文本字段中输入或删除字符?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以像 Whatsapp messenger 一样使用预填充文本输入字段的文本创建指向用户的链接?

输入字段在设置值后扩展?

正则表达式

正则表达式

是否值得在 TextChanged 事件上等待几毫秒?

正则表达是式