Можно ли присвоить UITextView через IB имя переменной? - PullRequest
1 голос
/ 05 января 2012

Я работаю над приложением, которое имеет несколько UITextView с пользовательской клавиатурой, а затем некоторые пользовательские пункты меню, которые будут вставлять предопределенный текст.Есть ли способ использовать переменную для UITextView?

Приведенный ниже код прекрасно работает, но мне нужно использовать пользовательскую клавиатуру / кнопки для более чем одной UITextView.

- (IBAction)textBTN:(id)sender {
    textView1.text = [textView1.text stringByAppendingString:@"myAsciiString"];
}

У меня также будет textView2, textView3 и т. Д.

1 Ответ

0 голосов
/ 05 января 2012

Вы можете добавить свои текстовые поля в массив и изменить их свойства в цикле:

NSArray *textViews= [NSArray arrayWithObjects:textView1, textView2, textView3, nil];
for(UITextView *txtView in textViews)
   txtView.text = [txtView.text stringByAppendingString:@"myAsciiString"];

[textViews release];

Редактировать

Если вы хотите знать, какой textView инициировал действие (при условии, что вы подключили несколько textViews к одному и тому же IBAction), вы можете либо установить и проверить тег представления, либо сравнить его с экземпляром:

textView1.tag = 0;
textView2.tag = 1;
textView3.tag = 2;
//etc.

- (IBAction)someTextViewAction:(id)sender {
    //Option 1
    if (sender.tag == 0)
       textView1.text = [textView1.text stringByAppendingString:@"myAsciiString"];
    else if(sender.tag == 1)
       textView2.text = [textView2.text stringByAppendingString:@"myAsciiString"];
    else if(sender.tag == 2)
       textView3.text = [textView3.text stringByAppendingString:@"myAsciiString"];

    //Option 2
    if ([sender isEqual:textView1])
       textView1.text = [textView1.text stringByAppendingString:@"myAsciiString"];
    else if ([sender isEqual:textView2])
       textView2.text = [textView2.text stringByAppendingString:@"myAsciiString"];
    else if ([sender isEqual:textView3])
       textView3.text = [textView3.text stringByAppendingString:@"myAsciiString"];

}

Если вы хотите присвоить значение активному текстовому представлению, вы можете перебирать свои подпредставления и, если у него есть первый респондент, установить значение:

- (IBAction)someButtonAction:(id)sender {

    for (UIView *view in self.subviews)
    {
            if ([view isKindOfClass:[UITextView class]])
            {
                if ([view isFirstResponder])
                {
                        view.text = [view.text stringByAppendingString:@"myAsciiString"];
                }
            }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...