【问题标题】:Character limit for multiple uitextfields多个 uitextfields 的字符限制
【发布时间】:2012-09-06 16:10:13
【问题描述】:

我是一个相当新的程序员,在使用一些 UITextfields 时遇到了问题,基本上我有两个文本字段,我想将其中一个字段中的字符数量限制在一定数量,同时允许另一个字段有很多.

我找到了推荐这个的帖子:

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

   NSUInteger newLength = [[textField text] length] + [string length] - range.length;
   return (newLength > 2) ? NO : YES;

}

但这似乎会影响两个文本字段。我不确定如何定位一个字段。

任何人都可以提供帮助,还有一件事,我知道该代码中发生的事情,直到 - 范围。长度,范围是字符总数吗?

【问题讨论】:

    标签: objective-c textfield


    【解决方案1】:

    好的,这里的问题是包含此代码的对象是两个文本字段的委托。两种方法来解决它。要么不添加您不关心长度的文本字段作为委托,要么更好的方法是在 shouldChangeCharactersInRange 方法期间区分字段。

    问题的第二部分是文本字段中正在更改的字符,包括:要更改的字符串的位置、要更改的字符串的长度。

    我个人的偏好是如果文本长度大于最大长度并且您不删除然后拒绝更改。

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    
        if(textField == self.textfieldYouWantToLimitTheLengthOf){
    
            if(textField.text.length > 2 && ![string isEqualToString:@""]){
    
                return NO;
            }
        }
        return YES;
    }
    

    【讨论】:

    • 感谢克里斯,这是一个非常有用的答案和范围函数的描述。我以另一种方式解决了这个问题(在另一个真正的程序员的帮助下:)),我只是检查了进行编辑的文本字段是否是基于其名称的正确字段,如果是这种情况,将执行范围检查.但是我可以看到你的方法也很有效,非常感谢。
    • 检查长度的逻辑有缺陷。这仅处理某些情况,在许多其他情况下会失败。
    • @rmaddy 答案更多的是在 2 个文本字段之间切换。想一想,请随时将我的代码示例更新为更完整的内容,以供任何人复制粘贴。
    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多