iPhone:textViewdDidBeginEditing:textview.tag 始终为 0
Posted
技术标签:
【中文标题】iPhone:textViewdDidBeginEditing:textview.tag 始终为 0【英文标题】:iPhone: textViewdDidBeginEditing: textview.tag always 0 【发布时间】:2013-08-19 11:19:32 【问题描述】:在我的应用程序中,我编写了一个循环来为我的文本视图分配标签:
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。 我该如何解决这个问题?
提前谢谢你。
【问题讨论】:
您在哪里设置 TextView 的委托?以及 handleTap: 做什么? 这段代码将在同一帧上添加多少个 textView? 要添加 10 个 UITextView 吗?您实际上在这里添加了 100 个 UITextView。 抱歉缺少零件和handleTap(这是我尝试使用的旧方法,现在没用了)。我正在尝试添加 81 个 UITextViews。 你的代码在我这边工作。 【参考方案1】:除了添加UITapGestureRecognizer,你还可以为UITextView设置一个delgate。
执行此操作的代码如下。
txtview.delegate = self;
现在你可以监听委托方法了。
- (void)textViewDidBeginEditing:(UITextView *)textView
NSLog(@"textView tag is %d",txtview.tag);
【讨论】:
【参考方案2】:改变:
txtview.tag = 10*k + j;
到
txtview.tag = j*10 + k;
【讨论】:
【参考方案3】:我认为你应该使用
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
并设置TextView
的代表,因为我复制了您的代码并尝试了自己并且它正在工作。
【讨论】:
以上是关于iPhone:textViewdDidBeginEditing:textview.tag 始终为 0的主要内容,如果未能解决你的问题,请参考以下文章
在 iphone 5 和 iphone 6 中动态设置字体大小