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

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

我在我的View Controller中包含了UITextFieldDelegate,并且实现了textFieldDidBeginEditing:方法,但是这种方法似乎只在第一次选择UITextField(它不会在第一次被调用)之后调用。

这有什么理由可以预防,还是有更好的方法来做到这一点? (即,按下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
}

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

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

你假设helpPanel已经存在并且可以更新。 但如果它还没有出现,它可能还不存在。

因此,请尝试以下操作:在调用[side showLeftPanelAnimated:YES]之前,不要设置helpPanel标题和文本。

链接地址: http://www.djcxy.com/p/66723.html

上一篇: UITextField textFieldDidBeginEditing: Not called on the first selection

下一篇: Scroll view for multiple textFields wont work