【问题标题】:TextField:shouldChangeCharactersInRange:replacementString: return trap!TextField:shouldChangeCharactersInRange:replacementString:返回陷阱!
【发布时间】:2011-05-11 04:01:18
【问题描述】:

我正在调用 UITableViewCell 委托方法 TextField:shouldChangeCharactersInRange:replacementString: 在具有四个 UITextFields 的自定义单元格上,一旦在其中一个字段上达到 maxlength 就会发生什么,它不允许您在其他字段中输入任何文本,因为它总是对于满足的初始 if 语句返回“否”。关于如何解决这个问题的任何想法?

目前我只在两个领域进行测试。提前感谢您的帮助。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    int regFieldOnelength = [regFieldOne.text length] ;
    int regFieldTwolength = [regFieldTwo.text length] ;


    if ((regFieldOnelength >= MAXLENGTH && ![string isEqualToString:@""]) || (regFieldTwolength >= MAXLENGTH && ![string isEqualToString:@""])) {
        if(regFieldOne.text = [regFieldOne.text substringToIndex:MAXLENGTH]){
            return NO;
        }
        if(regFieldTwo.text = [regFieldTwo.text substringToIndex:MAXLENGTH]){
            return NO;
        }
    }


    return YES;
}

【问题讨论】:

    标签: iphone uitableview uitextfield


    【解决方案1】:

    为什么要使用文本字段,而不是使用当前正在编辑的文本字段

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

    【讨论】:

    • 这里将当前文本字段作为参数传递给(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 方法
    • 我想我想在某个时候将文本保存在文本字段中,因为我想将所有字段连接在一起......你认为这是个好主意还是坏主意......我猜不好。大声笑,但如果我使用你的方法,我将如何在输入后从每个字段中捕获文本。
    • 你为什么不创建一个 IBOutlet 然后简单地从那个出口获取文本值。
    • 输入是什么意思?如果您有网点,那么您可以在代码中的任何位置从文本字段中获取文本。
    • 是的,我可以做到,我只是不确定如果字符串仍然在文本字段中,我是否使用你的方法?...我现在要尝试你的方法..虽然我还在对它的工作原理一无所知。
    【解决方案2】:

    你可以试试

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        int regFieldOnelength = [regFieldOne.text length] ;
        int regFieldTwolength = [regFieldTwo.text length] ;
    
    if((textField == regFieldOne) ||(textField == regFieldTwo)) {
    
        if ((regFieldOnelength >= MAXLENGTH && ![string isEqualToString:@""]) || (regFieldTwolength >= MAXLENGTH && ![string isEqualToString:@""])) {
            if(regFieldOne.text = [regFieldOne.text substringToIndex:MAXLENGTH]){
                return NO;
            }
            if(regFieldTwo.text = [regFieldTwo.text substringToIndex:MAXLENGTH]){
                return NO;
            }
        }
    
    
        return YES;
    }
        else {
          return YES;
        }
    }
    

    【讨论】:

    • 我刚试过这个,它和我做的一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多