我有一个表格,其中有一个代表字段限制在一个字段中输入4位数。现在我有另一个字段我想在同一形式的不同字段上使用另一个限制,这可以限制字段只输入七个值。我如何使用相同形式的两个委托,如果我使用它们,它们会显示两次使用的错误。这是我用于第一个字段的委托。
Bitmap bitmap = BitmapFactory.decodeFile(imagesPathArrayList.get(position));
ImageView.setImageBitmap(bitmap);
{
}
答案 0 :(得分:1)
而不是使用Delegates,而是考虑一个代理做任何事情......
您可以在委托中使用if,区分文本字段:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == textField1)
{
if(range.length + range.location > 4)
{
return NO;
}
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return newLength <= 4;
}
if (textField == textField2)
{
if(range.length + range.location > 7)
{
return NO;
}
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return newLength <= 7;
}
return YES;
}
希望这会有所帮助......
答案 1 :(得分:1)
要识别同一控制器中的不同文本字段,您可以为其指定标记。现在让我们举一个例子,你有两个文本域,你分别给它们标记为100和200。现在,您需要将用户可以输入的字符限制为4,标记为100的第一个文本字段和标记为200的第二个文本字段中的10个。因此,您的代码将如下所示:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
//To make sure no crashes occurs
if(range.length + range.location > textField.text.length)
{
return NO;
}
NSUInteger textLength = [textField.text length] + [string length] - range.length;
if (textField.tag == 100) {
return textLength <= 4;
}else if(textField.tag == 200){
return textLength <= 10;
}else{
//Other textfields except the one with tag 100 and 200 would have no limits
return YES;
}
}
我已经使用IF条件演示了这个示例,您可以使用Switch case或者您想要应用的任何内容。
希望这会对你有所帮助:)。