UITextField textFieldDidBeginEditing:第一次选择时未调用

时间:2013-05-05 13:51:35

标签: iphone ios objective-c xcode uitextfield

我正在尝试设置一个在UITextField开始编辑时立即发生的操作(更改一些文本以帮助用户在幻灯片放入的外部视图中放入该字段的内容)

我在我的View Controller中包含了UITextFieldDelegate,并实现了textFieldDidBeginEditing:方法,但是这个方法似乎只在第一次选择UITextField后调用(第一次没有调用它)。 / p>

有没有任何理由可以预防,或者有更好的方法吗? (即,在按下UIButton时检查正在编辑的文本字段)。

帮助面板(helpPanel)加载到viewDidLoad:方法中。

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    if (textField == tfMyTextField) {
        [helpPanel setTextTitle:@"'Title'"];
        [helpPanel setText:@"'message'"];
    } 
}

-(IBAction)showHelp:(id)sender {
    [self dismissAllInputs];
    SidePanelController *side = (SidePanelController *)[[UIApplication sharedApplication] delegate].window.rootViewController;
    [side showLeftPanelAnimated:YES]; // the left panel is the helpPanel instance
}

1 个答案:

答案 0 :(得分:0)

这听起来像事情发生顺序的简单问题。请考虑以下代码:

if (textField == tfMyTextField) {
    [helpPanel setTextTitle:@"'Title'"];
    [helpPanel setText:@"'message'"];
} 

您假设helpPanel已存在且可以更新。但如果还没有出现,也许它还不存在。

相反,请尝试以下操作:在之后 helpPanel之前,请不要设置[side showLeftPanelAnimated:YES]标题和文字。