2013-05-05 23 views
-2

我試圖建立爲UITextField開始編輯是立即發生的動作(改變一些文字,以幫助用戶與放什麼在外地的外部觀點,幻燈片)的UITextField textFieldDidBeginEditing:不叫第一選擇

我已經在我的視圖控制器中包含了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 
} 
+1

你能展示你的代碼嗎?您如何(以及何時)將此幫助面板滑出?你提到的「延遲」聽起來不過是由鍵盤上升引起的延遲。 – matt 2013-05-05 14:00:52

+0

新增 - SidePanelController是允許面板的外部庫的實現。顯示的左側面板只是我的helpPanel實例,並在viewDidLoad中設置:方法 – 2013-05-05 14:09:30

+0

感謝您的展示。所以有什麼問題?看起來你已經成功地設置了'helpPanel'的標題和文本,是嗎? – matt 2013-05-05 14:11:39

回答

0

這聽起來像事情發生順序的簡單問題。考慮以下代碼:

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

您假定helpPanel已經存在並且可以更新。但如果它還沒有出現,它可能還不存在。

因此,試試這個:不要設置helpPanel標題和文字,直到你叫[side showLeftPanelAnimated:YES]

+0

感謝馬特 - 遵循你的建議,並改變了我完成消息更新的方式。我做了兩個NSString來保存UITextField開始編輯時更新的兩個變量,然後在調用「showLeftPanelAnimated:」之後,我在那裏完成了setText:setTextTitle:方法,引用了字符串。再次感謝:) – 2013-05-05 14:36:46

+0

這正是我要建議的!!!!!!做得好。 – matt 2013-05-05 14:47:45