5

我有一个 UIVIew,它是一个子视图,它包含几个 UITextField。这些文本字段之一(用于 DATE)不应使用键盘进行编辑,而不是使用带有 Datepicker 的 PopOver。

达到时我运行一个方法UIControlEventEditingDidBegin。此方法调用resignFirstResponderDateTextField 上的 。

如果 DateTextField 是要编辑的第一个字段,则一切正常,但是当另一个 textField 被编辑并且当然显示键盘然后尝试编辑 DateField 时,键盘不会隐藏并且一切正常,但键盘会做任何事情。

我之前尝试过调用该方法endEditing:YESresignFirstResponder但它不起作用。我试图在文本字段方法上运行endEditing:YESand ,但没有办法让那个键盘出来。resignFirstResponderdidEndEditing

这是我的方法:

- (void)showDatePopOver:(id)sender{ 
    [self.view endEditing:YES];

    UITextField *textField = (UITextField *)sender;
    [sender resignFirstResponder]; // hide keyboard

    /** POP OVER LINES**/
}
4

1 回答 1

2

您应该使用textFieldShouldBeginEditing:委托方法而不是在以下情况下辞去第一响应者didBeginEditing

这将允许在除dateTextField文本字段之外的所有内容上进行编辑:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    return (![textField isEqual:dateTextField]);
}

你应该指定你的视图控制器是一个文本视图委托,就像这样(在接口声明[.h文件]中):

@interface MyViewController : UIViewController <UITextFieldDelegate>
于 2012-09-14T19:06:29.747 回答