iphoneesdk:当键盘仍然打开时,推入一个细节视图控制器后出现了一个奇怪的bug



这里有一个非常奇怪的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]时,点击

最新更新