【问题标题】:know about the character print in textfield了解文本字段中的字符打印
【发布时间】:2012-01-04 07:12:38
【问题描述】:

我想了解UITextField中的字符打印

当我开始在文本字段中输入文本时,它在框中输入完美,但在 NSLog 中它起初显示错误,它什么也不显示。在第二个字符处,它在控制台中显示第一个字符。我想知道为什么会发生这种情况,否则我在文本字段中看到了这两个字符。

这是我的文本字段委托方法代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"print %@", textField.text);
    return YES;
}
  // this is my console output
  2012-01-04 12:40:41.736 Demo[1982:f803] print 
  2012-01-04 12:40:43.497 Demo[1982:f803] print h

【问题讨论】:

    标签: iphone objective-c ios ipad uitextfield


    【解决方案1】:

    在调用 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 时,您的文本字段值尚未更改,因此这是您的正常输出。

    您必须从replacementString:(NSString *)string 中获取新字符。

    【讨论】:

    • 非常感谢,现在我心里清楚了。我想知道关于文本字段的另一件事。当我删除文本字段中的字符时,调用 textfiled 的哪个委托方法?
    • 没记错的话应该也叫这个
    • 同样的方法,替换字符串为 "" 范围 > 0
    【解决方案2】:

    这是正确的行为,因为 textField.text 的当前值在该方法返回 YES 之前不会改变。如果你想 NSLog 相同的字符串,你可以看到显示,那么你必须构建它在“范围”范围内更改字符“字符串”。这就是当你返回 YES 时 textField.text 会发生什么,如果你返回 NO 则不会发生什么。

    【讨论】:

    • 感谢您的回复.. 这也很有帮助
    【解决方案3】:

    没有错。它是 shouldChangeCharacters 方法的属性。这可能会有所帮助:Getting the Value of a UITextField as keystrokes are entered?

    【讨论】:

      【解决方案4】:

      也许在输入符号之前调用了这些方法。 尝试在选择器延迟一段时间后调用 NSLog。

      【讨论】:

        【解决方案5】:

        _should_... 表示尚未发生

        用途:

        [textField.text stringByReplacingCharactersInRange:range withString:string];
        

        【讨论】:

          【解决方案6】:

          尝试 NSLog 这个:

          [textField.text stringByReplacingCharactersInRange:range withString:string];
          

          【讨论】:

            猜你喜欢
            • 2022-01-15
            • 1970-01-01
            • 1970-01-01
            • 2016-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-07
            相关资源
            最近更新 更多