-2

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

我已经在我的视图控制器中包含了 UITextFieldDelegate,并实现了 textFieldDidBeginEditing: 方法,但是这个方法似乎只在第一次选择 UITextField 后才被调用(第一次没有被调用)。

是否有任何原因可以防止这种情况发生,或者有更好的方法来做到这一点?(即当按下 UIButton 时检查哪个文本字段正在编辑)。

帮助面板 (helpPanel) 在 vi​​ewDidLoad: 方法中加载。

-(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
}
4

1 回答 1

0

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

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

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

因此,请尝试以下操作:helpPanel调用.[side showLeftPanelAnimated:YES]

于 2013-05-05T14:28:46.457 回答