2013-08-19 6 views
-1

В моем приложении, я написал цикл, чтобы назначить тег для моих TextViews: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

Где вы заходящего ваш делегат от TextView на всех? И какой handleTap: делает? –

+2

Сколько textViews этот код добавит на том же фрейме? –

+0

Вы хотите добавить 10 UITextViews? Вы на самом деле добавляете здесь 100 UITextView. – Rushi

ответ

1

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

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

txtview.delegate = self;

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


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

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

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView 

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

1

Изменение:

txtview.tag = 10*k + j; 

в

txtview.tag = j*10 + k;