美文网首页
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