-1

在我的应用程序中,我编写了一个循环来为我的文本视图分配标签:

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。我该如何解决这个问题?

先感谢您。

4

3 回答 3

1

我认为你应该使用

    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView

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

于 2013-08-19T11:45:57.137 回答
1

除了添加 UITapGestureRecognizer 之外,您还可以为 UITextView 设置一个 delgate。

执行此操作的代码如下。

txtview.delegate = self;

现在您可以收听委托方法了。


- (void)textViewDidBeginEditing:(UITextView *)textView
{
   NSLog(@"textView tag is %d",txtview.tag);
}
于 2013-08-19T11:44:02.883 回答
1

改变 :

txtview.tag = 10*k + j;

txtview.tag = j*10 + k;
于 2013-08-19T11:49:50.260 回答