将 maxlength 设置为特定的 UITextField
Posted
技术标签:
【中文标题】将 maxlength 设置为特定的 UITextField【英文标题】:Set maxlength to specific UITextField 【发布时间】:2018-05-07 09:31:17 【问题描述】:我尝试将 maxlength 设置为我的 UITextfield,但它也会影响我的其他 UITextfield。
我尝试使用:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
// Prevent crashing undo bug – see note below.
if(range.length + range.location > textField.text.length)
return NO;
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return newLength <= 25;
我只想将 maxlength 设置为特定的 uitextfield。
【问题讨论】:
添加支票:if (textField == myTextField) //what you did goes here
需要在文本域中添加标签,并在 shouldChangeCharactersInRange 方法中比较标签
【参考方案1】:
首先,检查编辑文本字段。然后检查字符串的长度
- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
/// always allow other textfields
if (textField != specificTextfield)
return YES;
/// check max length
NSUInteger oldLength = [textField.text length];
NSUInteger replacementLength = [string length];
NSUInteger rangeLength = range.length;
NSUInteger newLength = oldLength - rangeLength + replacementLength;
BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;
return newLength <= MAXLENGTH || returnKey;
参考:Set UITextField Maximum Length
【讨论】:
【参考方案2】:将标签添加到您的文本字段。并在委托 shouldChangeCharactersInRange 方法中检查文本字段是否对应于特定标记。
#define MAXLENGTH 10
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (textField.tag == 1)
NSUInteger oldLength = [textField.text length];
NSUInteger replacementLength = [string length];
NSUInteger rangeLength = range.length;
NSUInteger newLength = oldLength - rangeLength + replacementLength;
BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;
return newLength <= MAXLENGTH || returnKey;
return true;
【讨论】:
【参考方案3】:这是为了快速,试试这个
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
let length = ((txtPhoneNumber.text?.count)! - range.length) + string.count
if length <= 9
return true
return false
【讨论】:
我使用了目标 - c以上是关于将 maxlength 设置为特定的 UITextField的主要内容,如果未能解决你的问题,请参考以下文章
无法为 HTML5 中的数字字段设置 maxlength 属性 [重复]
如何根据AngularJS中的不同组合框值在输入字段上设置maxlength?