繁体   English   中英

如何检测 UITextField 何时变空

How to detect when UITextField become empty

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想在 UITextField 变空时执行某个操作(用户一个接一个地删除所有内容或使用清除选项)。

我想过用两种方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

- (BOOL)textFieldShouldClear:(UITextField *)textField;

UITextFieldDelegate

我不确定如何检测文本字段变空时的情况? 我试过:

if ([textField.text length] == 0)

但它不起作用,因为在从文本字段中删除符号之前调用了上述方法的第一个。

有任何想法吗?

4 个回复
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSRange textFieldRange = NSMakeRange(0, [textField.text length]);
    if (NSEqualRanges(range, textFieldRange) && [string length] == 0) {
        // Game on: when you return YES from this, your field will be empty
    }
    return YES;
}

需要注意的是,该字段直到此方法返回后才会为空,因此您可能希望在此处设置一些中间状态,然后使用textFieldDidEndEditing:来了解用户已完成清空该字段。

如果有人正在搜索此代码的 Swift 4.2 版本,则如下所示。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let textFieldRange = NSRange(location: 0, length: textField.text?.count ?? 0)
    if NSEqualRanges(range, textFieldRange) && string.count == 0 {
        // Do whatever you want when text field is empty.
    }
    return true
}

以下代码也有效。

-(void)textfieldDidChange:(UITextField *)textField

{

if (textField == first)
{

    [second becomeFirstResponder];

}
else if(textField == second)
{
    if (textField.text.length == 0)
    {
        [first becomeFirstResponder];
    }
    else
    {
        [third becomeFirstResponder];
    }

}
else if(textField == third)
{
    if (textField.text.length == 0)
    {
        [second becomeFirstResponder];
    }
    else
    {
         [four becomeFirstResponder];
    }

}

else if(textField == four)
{
    if (textField.text.length == 0)
    {
        [third becomeFirstResponder];
    }
    else
    {
        [four becomeFirstResponder];
    }

}
}

为每个文本字段添加了目标。 对我来说,当当前文本字段中的文本为空时,我必须将光标放在前一个字段中。 如果您需要任何澄清,请告诉我。

这是不使用 NSRange 的解决方案

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    if(textField.text.length==1 && string.length==0){
        //textfield is empty
    }else{
        //textfield is not empty
    }

    return true;
}
2 无法检测到UITextField

大家好,我无法找到我的UITextField loginId或将其与自定义viewcontroller.h文件连接。 当我尝试使用NSString *data = loginId.text;获取该类时NSString *data = loginId.text; 它告诉我它不存在。 .h ...

3 检测UITextField的焦点更改

我正在尝试设置动画,以便在隐藏和显示文本字段的键盘时向上移动视图,并使它工作得很好,但是当焦点从一个文本字段移到另一个文本字段时,它不起作用因为已经显示了键盘。 在viewDidLoad中,我注册了以下内容: 然后在keyboardWillShow和keyboardWillHide ...

4 如何检测UITextField上的点击?

我有一个禁用用户交互的UITextField。 因此,如果您点击此文本字段,则不会发生任何事情。 通常检查文本字段是否被点击Id尝试委托方法,但我不能,因为禁用了用户交互。 有什么方法可以检查文本字段是否被轻击/触摸? 我将另一个元素更改为hidden = no; 当它被点击时,我想知 ...

5 检测UITextField失去焦点

我搜索了很多谷歌搜索和heree,但没有任何用处。 我有两个文本域,我无法识别哪一个失去了焦点。 我尝试了所有选项,但没有。 这里是textFieldDidEndEditing : 所有NSLog都返回0! 为什么?!? 我如何检测丢失的焦点? 每次按下键盘按钮 ...

6 检测哪个uitextfield称为uikeyboard

经过很多麻烦之后,我能够将RETURN按钮添加到数字键盘上。 在将其他数据引入其他uitextfields时,我想删除它,因为当前每次使用键盘时都会出现该按钮,它是键盘的一部分。 我在KeyBoardDidShow上添加了事件处理程序,否则它不起作用, 然后在KeyboarW ...

7 检测UITextField内容更改

当用户在文本字段中键入内容,并显示“ NSInvalidArgumentException”和“无法识别的选择器发送给实例...”时,我的应用程序不断崩溃。 我试图检测用户何时键入某些内容,以便随后运行一些代码。 我已经在此处关于Stackoverflow的内容四处寻找,下面的代码是我发现的 ...

8 在UITextField中检测回车

我有一个应用程序,使用户能够在一系列UITextView输入注释。 完成后,应用程序会生成pdf报告。 由于输入的文本长度不同,因此应用程序需要计算将文本放在pdf上的位置。 我无法弄清楚的是如何检测文本中是否包含了返回,以便我可以将文本放在pdf下方。 我需要在文本完成时以及在页面 ...

9 UITextField点击检测

关于在文本字段上进行轻按事件,我一直遇到问题。 我已经尝试了几乎所有东西。 几乎。 从包括文本字段委托到调用它,再到将文本字段变成一个动作,一直到添加UIGestureRecognizers以及在函数形式中使用made选择器。 我的文本字段也位于另一个快速文件中,因为它位于自定义单元 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM