iPhoneSDK:在键盘仍处于打开状态时推送detailviewcontroller后出现奇怪的错误

时间:2011-08-16 13:49:34

标签: iphone objective-c ios

我这里有一个非常奇怪的错误,这就是场景;

- 我点击我的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];        
}

任何想法?

2 个答案:

答案 0 :(得分:1)

在推送详细视图控制器之前,只需致电[currentTextField resignFirstResponder]

使用以下方法设置 currentTextField

- (void)textFieldDidBeginEditing:(UITextField *)textField {

    currentTextField = textField;
    // Your code here 
}

答案 1 :(得分:0)

奥卡姆剃刀。 不要让他们不要点击完成按钮

在整个屏幕上放置一个透明的UIButton。致电[textField becomeFirstResponder]时显示。您可以阻止人们触摸屏幕并切换textFields,也可以在点击时调用[textField resignFirstResponder]