我这里有一个非常奇怪的错误,这就是场景;
- 我点击我的UITableView上的一个文本字段,出现了uikeyboard,
- 然后没有按完,我点击屏幕上的另一个文本字段(已禁用),
- 此禁用的文本字段推送详细视图控制器,
- 我在detailview上工作,返回,
-Surprize!主要的UITableview不再可以滚动到底部了!所以我不能再编辑底部细胞了!
这不会发生如果我在编辑后按完了(这样关闭键盘),然后点击详细视图,现在效果很好。
我认为这是关于resignfirstResponder在我切换到另一个视图之前没有被调用的东西,所以我试图将这个msg发送到tableview中的所有文本字段..但它变得更糟。
我尝试在推送detailviewcontroller之前添加以下这行,但是没有用,这是有道理的,因为这就是我所说的通常对数字键盘进行调用,并且当它从我的自定义“完成”调用时它起作用按钮关闭nuber垫
[[self view] endEditing:YES];
这就是我如何设置uikeyboards取决于cellforRowAtIndex方法中的内容
if(somelogic){
cell.textField.keyboardType=UIKeyboardTypeNumberPad;
[self resignFirstResponder];
[self becomeFirstResponder];
}
else{
cell.textField.keyboardType=UIKeyboardTypeDefault;
[self resignFirstResponder];
[self becomeFirstResponder];
}
任何想法?
答案 0 :(得分:1)
在推送详细视图控制器之前,只需致电[currentTextField resignFirstResponder]
。
使用以下方法设置 currentTextField 。
- (void)textFieldDidBeginEditing:(UITextField *)textField {
currentTextField = textField;
// Your code here
}
答案 1 :(得分:0)
奥卡姆剃刀。 不要让他们不要点击完成按钮。
在整个屏幕上放置一个透明的UIButton。致电[textField becomeFirstResponder]
时显示。您可以阻止人们触摸屏幕并切换textFields,也可以在点击时调用[textField resignFirstResponder]
。