2013-05-05 3 views
-2

UITextField가 편집을 시작할 때 즉시 발생하는 동작을 설정하려고합니다 (슬라이드하는 외부보기의 필드에 무엇을 넣을 지 사용자에게 도움이되도록 일부 텍스트 변경). in)UITextField textFieldDidBeginEditing : 첫 번째 선택시 호출되지 않습니다.

UITextFieldDelegate를 내 View Controller에 포함시키고 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

+0

추가됨 - SidePanelController는 패널을 허용하는 외부 라이브러리의 구현입니다. 표시되는 왼쪽 패널은 단순히 helpPanel의 인스턴스이며 viewDidLoad에 설정됩니다. 메서드 –

+0

그것을 보여 주셔서 감사합니다. 문제가 뭐니? 'helpPanel'의 제목과 텍스트를 성공적으로 설정 한 것 같습니다. – matt

답변

0

일이 일어나는 순서의 간단한 문제처럼 들립니다.

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

당신은 helpPanel이 이미 존재하고 업데이트 할 수 있음을 가정합니다 :이 코드를 생각해 보자. 그러나 아직 나타나지 않았다면 아마도 아직 존재하지 않을 것입니다.

대신 다음을 시도하십시오. 제목과 텍스트를 까지 설정하고 다음에 [side showLeftPanelAnimated:YES]으로 전화하지 마십시오.

+0

감사합니다. Matt - 조언을 따르고 메시지 업데이트를 수행 한 방식을 변경했습니다. 나는 UITextField가 편집을 시작할 때 업데이트되는 두 개의 NSString을 만들었고, "showLeftPanelAnimated :"가 호출 된 후 문자열을 참조하는 setText : setTextTitle : 메서드를 수행했습니다. 다시 한 번 감사드립니다 :) –

+0

정확히 제가 제안하려고했던 것입니다 !!!!!! 잘 했어. – matt

관련 문제