0

警告:我是 ios 开发的新手,但一般不会编码。

我正在尝试对 UITextView 进行一些验证,实际上有几个。对长度的要求都略有不同。我已经创建了一个自定义委托来处理这个问题,但是我遇到了一个问题,即如何使它对发送它的 textview 唯一。

我在几个不同的 nib 中有几个字段可以使用这个委托。大多数笔尖都有 3 个文本视图,标签如下:摘要、详细信息和特殊说明。每一个都有不同的最大长度,分别为 50、100、130。

TL:博士;如何获得每个发件人的唯一 ID,以便我可以对它们进行切换?

编辑:我还想更新一个标签,在需要之前隐藏,以倒计时剩余的可用字符。如何确保我访问的是正确的控制器和标签?

4

2 回答 2

1

在您的委托协议中,定义一种发送 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;
    }
}
于 2013-07-17T16:15:29.630 回答
0

为每个 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
于 2013-07-17T16:17:00.810 回答