ios - 如何限制 XLForm 中的字符数?
问题描述
我使用 [row.cellConfigAtConfigure setObject:@(5) forKey:XLFormTextViewMaxNumberOfCharacters] 无效
row = [XLFormRowDescriptor formRowDescriptorWithTag:kHouseTitle rowType:XLFormRowDescriptorTypeTextView title:@"HouseTitle"];
row.value = self.houseInfo.title;
[row.cellConfigAtConfigure setObject:@(5) forKey:XLFormTextViewMaxNumberOfCharacters];
[section addFormRow:row];
因为我需要不同的行长度。现在我找到了处理它的方法。
-(UITextField *)getCurrentTextFiledWithRow:(XLFormRowDescriptor *)row {
XLFormBaseCell *cell = [row cellForFormController:self];
if ([cell isKindOfClass:[XLFormTextFieldCell class]]) {
XLFormTextFieldCell *xlFormTextFieldCell = (XLFormTextFieldCell *)cell;
return xlFormTextFieldCell.textField;
}
else {
return nil;
}
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
XLFormRowDescriptor *buildingAreaRow = [self.form formRowWithTag:kBuildingArea];
XLFormRowDescriptor *livingAreaRow = [self.form formRowWithTag:kLivingArea];
XLFormRowDescriptor *housePriceRow = [self.form formRowWithTag:kHouseCellingPrice];
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if ([self getCurrentTextFiledWithRow:buildingAreaRow] == textField) {
if(newString.length > 4){
return NO;
}
}
else if ([self getCurrentTextFiledWithRow:livingAreaRow] == textField) {
// TODO
}
else if([self getCurrentTextFiledWithRow:housePriceRow] == textField) {
//TODO
}
return YES;
}
解决方案
你可以用这种方式,我猜
NSString *const XLFormTextViewMaxNumberOfCharacters = @"textViewMaxNumberOfCharacters";
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (self.textViewMaxNumberOfCharacters)
{
// Check maximum length requirement
NSString *newText = [textView.text stringByReplacingCharactersInRange:range withString:text];
if (newText.length > self.textViewMaxNumberOfCharacters.integerValue) {
return NO;
}
}
//perform based on your need
return [self.formViewController textView:textView shouldChangeTextInRange:range replacementText:text];
}
推荐阅读
- javascript - 使用节点和 Multer 将图像上传到本地文件夹时出现问题
- pandas - 如何使用其他行中具有公共列值的值替换 nan 值
- powershell - 当我将 PowerShell 设置为默认应用程序时,为什么我的一些 PowerShell 脚本停止工作?
- oop - Go lang - 接口的多态性;实现接口的类型数组
- python - Python Pandas str.contains() 行中带有超链接
- javascript - fetch().then().catch(); 没有捕捉到“未捕获(承诺)DOMException:用户中止了请求。”
- javascript - ThreeJS KTX2Loader“尝试在 .uploadTexture() 中加载不支持的压缩纹理格式”
- xamarin - WorldPayCSE 的 Xamarin IOS 绑定库
- python - 如何使用字典中的值遍历列表
- java - 对使用房间数据库填充 AutoCompleteTextView 建议感到困惑