喜 我在我的应用程序中连续使用了一系列文本字段,我的要求是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答案 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;
}