2013-08-19 217 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;