今天在項目中遇到了一個問題:
? ? ? 我自己寫了一個類繼承UIVIew,該類就取名叫TextView吧,在TextView里面我創(chuàng)建了一個UITextFiled,然后我把該類導入到了一個控制器里,就叫TextController吧,在TextController里面我通過循環(huán)創(chuàng)建了四個TextView的對象,加到了TextController的View上面.然后我在控制器的視圖上又加了一個點擊手勢,點擊手勢要達到讓UITextFiled的鍵盤收起來的效果,本來覺得挺簡單的,,但是遇到了問題,就是我創(chuàng)建了四個,結果前三個點擊了不會讓鍵盤收起,只有最后一個點擊了才會讓鍵盤收起.
?以上就是問題的大概描述.
問題的原因:看我創(chuàng)建的方法
- (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;
}
}
這樣創(chuàng)建的問題是什么,具體我也不是太清楚(因為我也是菜鳥)希望有大神可以給我解釋一下.真的希望有人可以給我講啊,我只是大概知道這樣,是指針的問題吧......
解決的方法:
用TextView創(chuàng)建四個不同的對象,然后把每個類名放到一個數組里,也是通過循環(huán)來創(chuàng)建view,要用NSClassFromString來創(chuàng)建對象,這樣就不會有問題了.
具體的代碼:
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];
}
}