将最大容量设置为UITextField

时间:2011-03-31 13:51:39

标签: iphone ipad

喜 我在我的应用程序中连续使用了一系列文本字段,我的要求是textfield应该只接受一个字符。如果用户输入第二个字符,则不应该执行任何操作。

我实现了如下的委托方法

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

if ([cellTextField.text length]>=MAXLENGTH && range.length==0) {
    textField.text=[cellTextField.text substringToIndex:MAXLENGTH-1];
    return NO;
}
else {
    return YES;
}

但是我的要求没有使用上面的代码填写。

我的下一个要求是,如果用户继续输入第二个字符,则该字符应放在连续的textField中(想象填字游戏或争夺应用程序)。如果可能的话,请在两种情况下帮助我,对第一项要求的其他解决方案也很感激。

谢谢你, dinakar

3 个答案:

答案 0 :(得分:2)

以下代码为我解决了这个问题。

确保检查“\ b”(退格键转义符),以便用户仍然可以删除。

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

就你的第二个要求而言,它真的不太难。只需在上面的if语句中添加几行代码:

nextTextField.text = [nextTextField.text stringByAppendingString:string]; 

这应该将您输入的任何文本添加到下一个文本字段的末尾。您可能还想更改退格处理的方式。类似的东西:

 if ([string isEqualToString:@"\b"])
    nextTextField.text = [nextTextField.text substringToIndex:[nextTextField.text length]-1];

在上面的if语句中添加该代码也应该允许你删除完整字符串末尾的字符(在下一个文本字段的字符串末尾)。


编辑:这是我用来创建字段的代码。

titleInput = [[UITextField alloc] initWithFrame:(CGRect){40,145,400,30}];
titleInput.borderStyle = UITextBorderStyleRoundedRect;
titleInput.delegate = self;
[self addSubview:titleInput];

干杯

答案 1 :(得分:1)

if(cellTextField.text.length >= MAXLENGTH)
{
      [cellTextField2 becomeFirstResponder]
}

这将焦点设置为第二个文本字段

答案 2 :(得分:0)

在下面的函数中查看UITextField中的字符数;

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

如果您文本字段中的字符数大于1,则返回NO;

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
  {
         if(mytextField1 == textField && [mytextField1.text length] >= 1)
         {
               [mytextField1 becomeFirstResponder];
               return NO;
         }
         else if(mytextField2 == textField && [mytextField2.text length] >= 1)
         {
               [mytextField3 becomeFirstResponder];
               return NO;
         }
         ------------------------------- 
         -------------------------------
         else if(mytextField8 == textField && [mytextField8.text length] >= 1)
         {
               [mytextField1 becomeFirstResponder];
               return NO;
         }

       return YES;
  }