iPhone: textViewdDidBeginEditing: textview.tag всегда 0

В моем приложении я написал цикл для присвоения тега моим текстовым представлениям:

for(j = 0; j<9; j++)
    for(k = 0; k<9; k++) {
        UITextView*txtview =
        [[UITextView alloc]initWithFrame:CGRectMake(x,y,25,25)];
        txtview.backgroundColor = [UIColor clearColor];
        txtview.textColor = [UIColor redColor];
        txtview.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
        txtview.tag = 10*k + j;
        txtview.keyboardType = UIKeyboardTypeNumberPad;
        [self.view addSubview:txtview];
        [txtview sizeToFit];
        txtview.delegate = self;
        x = x+40;
        y = y+40;
        NSLog(@"%d",txtview.tag);
    }

}

Журнал в конце цикла правильно печатает только что назначенный тег.

Проблема в том, что при вызове метода textViewDidBeginEditing, если я пытаюсь получить textView.tag с другим журналом, он всегда возвращает 0. Как я могу решить эту проблему?

Заранее спасибо.

3 ответа

Решение

Помимо добавления UITapGestureRecognizer, вы можете установить delgate для UITextView.

Код для этого заключается в следующем.

txtview.delegate = self;

Теперь вы можете слушать метод делегата.


- (void)textViewDidBeginEditing:(UITextView *)textView
{
   NSLog(@"textView tag is %d",txtview.tag);
}

Я думаю, что вы должны использовать

    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView

и установить делегат TextViewпотому что я скопировал твой код и попробовал себя, и он работал.

Изменить:

txtview.tag = 10*k + j;

в

txtview.tag = j*10 + k;
Другие вопросы по тегам