是否可以在UITextField中设置宽空格

时间:2015-05-19 11:31:47

标签: ios objective-c passwords uitextfield

我有UITextField,基本上需要4个数字NSInteger。现在我想将“密码”放入其中。我的意思是每个数字之间会有一定的空间。如下图所示。

enter image description here

我知道我可以在字体上放置空格&我的UITextField的背面,但我希望每个输入字符之间有一定的距离。在iOS中可以吗?如果是,那么任何建议的指导都将受到高度赞赏。

提前多多感谢。

4 个答案:

答案 0 :(得分:3)

首先,将Tag添加到所有四个文本字段,即1,2,3和4。

并使用下面的代码在textfield中输入文本。这里StrTxt是所有四个文本域的组合字符串。

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

int currentTag = (int)textField.tag;

if(string.length==0 && range.length==1)
{
    textField.text = @"";
    UITextField *newTextField = (UITextField *) [textField.superview viewWithTag:(currentTag-1)];
    [newTextField becomeFirstResponder];
    StrTxt = [StrTxt substringToIndex:currentTag-1];
    return NO;
}
else
    StrTxt = [StrTxt stringByAppendingString:string];

if((textField.text.length + string.length) >= 1)
{
    if(currentTag == 4)
    {
        //do your stuff here.

        if(textField.text.length<1)
            return YES;
        else
            return NO;
    }


    UITextField *newTextField = (UITextField *) [textField.superview viewWithTag:(currentTag+1)];
    if(newTextField.text.length==0)
        [newTextField becomeFirstResponder];
    if(textField.text.length==0)
    {
        textField.text = [textField.text stringByAppendingString:string];
        return NO;
    }
    else
    {
        if(currentTag+1 == 4)
        {
            if(newTextField.text.length>=1)
                return NO;

            //do your stuff here.
        }
        else
            if(newTextField.text.length>=1)
                return NO;
        return YES;
    }

}
return YES;
}

答案 1 :(得分:2)

如果有四个文本字段,那么它非常简单。 为您的文本字段分配标签,即1,2,3,4 .... 将委托分配给您的文本字段并使用它的委托方法

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField.text.length == 1) {
        switch (textField.tag) {
            case 1:
                [txt2 becomeFirstResponder];
                break;
            case 2:
                [txt3 becomeFirstResponder];
                break;
            case 3:
                [txt4 becomeFirstResponder];
            default:
                [textField resignFirstResponder];
                break;
        }
    }
    return YES;
}

如果您需要任何进一步的帮助,请告诉我

答案 2 :(得分:1)

 -(void)textViewDidChange:(UITextView *)textView
{

NSInteger num=textView.selectedRange.location;

NSString *final_key=textView.text;
        final_key=[final_key uppercaseString];

final_key=[final_key stringByReplacingOccurrencesOfString:@" " withString:@""];

    textView.text=@"";
        while(final_key.length>3)
        {
            NSString *str=[final_key substringToIndex:4];
            textView.text=[textView.text stringByAppendingFormat:@"%@ ",str];
            final_key=[final_key substringFromIndex:4];

        }

        textView.text=[textView.text stringByAppendingFormat:@"%@",final_key];

if(!delete_key_pressed)
        {

 NSString *ch=[NSString stringWithFormat:@"%c",[textView.text characterAtIndex:num-1]];

 //NSLog(@"%@",ch);

        if([ch isEqualToString:@" "])
        {
            num=num+1;
        }
        }
        else{
           // num=textView.selectedRange.location;
           NSString *ch=[NSString stringWithFormat:@"%c",[textView.text characterAtIndex:num-1]];
           // NSLog(@"%@",ch);
            if([ch isEqualToString:@" "])
            {
                num=num-1;
            }
        }
        textView.selectedRange=NSMakeRange(num, 0);


}

答案 3 :(得分:-1)

回答 Swift 3.0

doe.jane@email.com

其中间距是CGFloat。例如2.0。

有关详细信息,请查看我在下面分享的链接中提供的答案。

How to set letter spacing of UITextField

但是,它并没有处理字符限制。