警告:我是ios开发的新手,但不是一般的编码。
我正在尝试对UITextView进行一些验证,实际上有几个。所有这些对长度的要求略有不同。我已经创建了一个自定义委托来处理这个问题,但我遇到了一个问题,即如何使它对发送它的文本视图是唯一的。
我在几个不同的笔尖中有几个字段将使用此委托。大多数笔尖都有3个文本视图,标记为:摘要、详细信息和特殊说明。它们中的每一个分别具有不同的最大长度50103130。
TL:DR;如何为每个发件人获取唯一的id,以便对其进行切换?
编辑:我还想更新一个标签,在需要之前隐藏,以倒计时剩余的可用字符。我如何确保我正在访问正确的控制器和标签?
在您的委托协议中,定义一种将UITextView实例与其他任何东西一起发送的方式,例如:
@protocol UITextFieldValidationDelegate
- (BOOL) textField:(UITextField)tf textForValidation:(NSString *)newText;
@end
因此,当UITextFields调用此项时,它们会将自己传递给代理进行检查:
BOOL valid = [self.delegate textField:self textChanged:newText];
在学员中,您将实现为:
- (BOOL) textField:(UITextField)tf textForValidation:(NSString *)newText
{
//compare to your IBOutlets
if (tf == self.tfPhoneNumber)
{
//Do phone number validation
}
else if (tf == self.tfEmail
{
//Do email validation
}
if (valid)
{
return YES;
}
else
{
return NO;
}
}
向每个textView添加一个标记,并在委托方法中检查该标记。
//In your viewcontroller setup
someTextView.tag = 0;
someOtherTextView.tag = 1;
someThirdTextView.tag = 2;
//In your delegate methods
if(textView.tag == 0)
//do something
else if(textView.tag == 1)
//do something else
else if(textView.tag == 2)
//do a third thing