在我的应用程序中,我编写了一个循环来为我的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。 我该如何解决这个问题?
提前谢谢。
答案 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;