我需要从发送方(UITextView)获取引用出口或其他标识符



警告:我是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

最新更新