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 中动态设置字体大小

Surface Pro4链接不上iphone手机的热点

iphone13和12外观的区别 iphone13和iphone12对比哪个好

为 iPhone 和 iPhone 4 开发之间有啥变化?

iPhone 5 与 iPhone 4 的图像命名

设置图像以适合 iPhone 5 和 iPhone 6