我有UITextField
,基本上需要4个数字NSInteger
。现在我想将“密码”放入其中。我的意思是每个数字之间会有一定的空间。如下图所示。
我知道我可以在字体上放置空格&我的UITextField
的背面,但我希望每个输入字符之间有一定的距离。在iOS中可以吗?如果是,那么任何建议的指导都将受到高度赞赏。
提前多多感谢。
答案 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
但是,它并没有处理字符限制。