这里有一个非常奇怪的bug,这是场景;
-I点击我的UITableView的一个文本域,uikeyboard出现,
-然后没有按下done,我点击屏幕上的另一个文本字段(一个禁用的),
-这个被禁用的textfield推送一个detailview控制器,
-I在detailview和上完成我的工作,返回,
惊奇!主UITableview不能再向下滚动了!所以我不能再编辑底部的单元格了!
这不会发生如果我按完成后编辑(所以关闭键盘),然后点击细节视图,现在它工作得很好。
我认为这是关于resignfirstResponder在我切换到另一个视图之前没有被调用,所以我试图将这个msg发送到tableview中的所有textfield ..但它变得更糟。
我还尝试在我推detailviewcontroller之前添加下面这行,但没有工作,这是有趣的,因为这是我通常称之为辞职的数字垫,当它从我的自定义"完成"按钮调用时,它可以工作,以解散数字垫
[[self view] endEditing:YES];
这就是我如何设置uikeyboard依赖于cellforRowAtIndex方法中的内容
if(somelogic){
cell.textField.keyboardType=UIKeyboardTypeNumberPad;
[self resignFirstResponder];
[self becomeFirstResponder];
}
else{
cell.textField.keyboardType=UIKeyboardTypeDefault;
[self resignFirstResponder];
[self becomeFirstResponder];
}
任何想法?
在推送细节视图控制器之前调用[currentTextField resignFirstResponder]
。
在下面的方法中设置currentTextField。
- (void)textFieldDidBeginEditing:(UITextField *)textField {
currentTextField = textField;
// Your code here
}
奥卡姆剃刀。不要让他们不点击完成按钮。
在整个屏幕上放置一个透明的UIButton。调用[textField becomeFirstResponder]
时显示它。您可以阻止人们触摸屏幕和切换文本字段,或调用[textField resignFirstResponder]
时,点击