iPhone:textViewdDidBeginEditing:textview.tag始终为0

时间:2013-08-19 11:19:33

标签: ios uitextview uitextviewdelegate

在我的应用程序中,我编写了一个循环来为我的textviews分配标记:

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 个答案:

答案 0 :(得分:1)

除了添加UITapGestureRecognizer之外,您还可以为UITextView设置委托。

执行此操作的代码如下。

txtview.delegate = self;

现在你可以听取委托方法了。


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

答案 1 :(得分:1)

我认为你应该使用

    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView

并设置TextView的委托,因为我复制了您的代码并尝试了自己并且它正在运行。

答案 2 :(得分:1)

更改:

txtview.tag = 10*k + j;

txtview.tag = j*10 + k;