美文网首页
iOS中添加手势,取消TextField响应的问题

iOS中添加手势,取消TextField响应的问题

作者: atiman | 来源:发表于2016-01-13 17:58 被阅读1822次

    今天在项目中遇到了一个问题:

          我自己写了一个类继承UIVIew,该类就取名叫TextView吧,在TextView里面我创建了一个UITextFiled,然后我把该类导入到了一个控制器里,就叫TextController吧,在TextController里面我通过循环创建了四个TextView的对象,加到了TextController的View上面.然后我在控制器的视图上又加了一个点击手势,点击手势要达到让UITextFiled的键盘收起来的效果,本来觉得挺简单的,,但是遇到了问题,就是我创建了四个,结果前三个点击了不会让键盘收起,只有最后一个点击了才会让键盘收起.

     以上就是问题的大概描述.

    问题的原因:看我创建的方法

    - (void)creatTechniqueDataViews{

           for (NSInteger dataViewIndex = 0 ; dataViewIndex < TECH_DATA_UNIT.count; ++ dataViewIndex) {

            TextView * dataView  = [[TechniqueDataView alloc]initWithFrame:CGRectMake(dataViewIndex % 2 * WIDTH(320) / 2 + WIDTH(320)/15, WIDTH(330) + dataViewIndex / 2 * WIDTH(30) , WIDTH(320) /5 * 2, WIDTH(28))];

    [self.view addSubview:dataView];

    dataView.tag = TAG_TECHVIEW + dataViewIndex;

    dataView.nameLabel.text = TECH_DATA_TYPE [dataViewIndex];

    dataView.unitTypeLable.text = TECH_DATA_UNIT [dataViewIndex];

    dataView.contentField.delegate = self;

    }

    }

    这样创建的问题是什么,具体我也不是太清楚(因为我也是菜鸟)希望有大神可以给我解释一下.真的希望有人可以给我讲啊,我只是大概知道这样,是指针的问题吧......

    解决的方法:

    用TextView创建四个不同的对象,然后把每个类名放到一个数组里,也是通过循环来创建view,要用NSClassFromString来创建对象,这样就不会有问题了.

    具体的代码:

    for (NSInteger dataViewIndex = 0 ; dataViewIndex < TECH_DATA_UNIT.count; ++ dataViewIndex) {

    //其中self.viewNameArray里装的是类名,self.viewArray是用来装view的

     TechniqueDataView * view = (TechniqueDataView *)NSClassFromString(self.viewNameArray[dataViewIndex]);

    view  = [[TechniqueDataView alloc]initWithFrame:CGRectMake(dataViewIndex % 2 * WIDTH(320) / 2 + WIDTH(320)/15, WIDTH(330) + dataViewIndex / 2 * WIDTH(30) , WIDTH(320) /5 * 2, WIDTH(28))];

    [self.backGroundImage addSubview:view];

    view.tag = TAG_TECHVIEW + dataViewIndex;

    view.nameLabel.text = TECH_DATA_TYPE [dataViewIndex];

    view.unitTypeLable.text = TECH_DATA_UNIT [dataViewIndex];

    view.contentField.tag = TAG_TECHVIEW + dataViewIndex;

    view.contentField.delegate = self;

    view.contentField.layer.borderColor = [[UIColor colorWithRed:0 green:255 blue:255 alpha:0.8] CGColor];

    view.contentField.layer.borderWidth = 1.0f;

    [self.viewArray addObject:view];

    }

    ----------点击手势的点击事件为:

    - (void)keyBoardHide:(UITapGestureRecognizer *)tap{

    for (TechniqueDataView * view in self.viewArray) {

    [view.contentField resignFirstResponder];

    }

    }

    相关文章

      网友评论

          本文标题:iOS中添加手势,取消TextField响应的问题

          本文链接:https://www.haomeiwen.com/subject/tavckttx.html