2013-08-19 414 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

此代碼將在同一幀上添加多少個textView? –

+0

你想添加10個UITextViews嗎?你實際上在這裏添加100個UITextViews。 – Rushi

回答

1

除了添加UITapGestureRecognizer,您可以爲UITextView設置一個delgate。

要做到這一點的代碼如下。

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;