我从另一个堆栈溢出帖子中找到了此代码
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger upperRightLength = [upperRight.text length] + [string length] - range.length;
return (upperRightLength > 1) ? NO : YES;
}
我需要在多个textField上运行相同的代码(效果很好)。
我尝试了此操作,但它似乎无法正常运行,并且没有相同的效果!
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger upperRightLength = [upperRight.text length] + [string length] - range.length;
return (upperRightLength > 1) ? NO : YES;
NSUInteger upperLeftLength = [upperLeft.text length] + [string length] - range.length;
return (upperLeftLength > 1) ? NO : YES;
}
我不知道该怎么办!非常感谢你的帮助!!
编辑:我现在尝试了另一个代码:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger upperRightLength = [upperRight.text length] + [string length] - range.length;
NSUInteger upperLeftLength = [upperLeft.text length] + [string length] - range.length;
return (upperLeftLength > 1 && upperRightLength > 1 ) ? NO : YES;
}
现在似乎发生了同样的事情。我首先单击哪个文本字段(让我说“ upperLeft”),但我仍然可以键入想要的任意多个字符。但是,当我单击另一个文本字段(upperRight)时,我只能键入1个字符。我尝试过先从(upperRight)开始,然后看到相同的结果...(upperRight)将允许我键入任意数量的文字,而(upperLeft)将仅允许我键入1个字符!太奇怪了!谢谢您的帮助!!
我认为您缺少委托方法的要点。此方法为您提供了正在编辑的textField,因此您可以使用给textField
定的引用而不使用ivar
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSUInteger length = [textField.text length] + [string length] - range.length;
return !(length > 1);
}
有许多不同的方法可以处理不同字段的不同长度。最简单的是:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSInteger maxLength = 1;
if (textField == self.myOtherTextField) {
maxLength = 2;
}
NSUInteger length = [textField.text length] + [string length] - range.length;
return !(length > maxLength);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句