2010-01-03 5 views
3

UITextField를 선택하면 UIPickerView가 키보드 대신 표시 될 수 있습니까? Interface Builder의 모든 옵션은 일종의 키보드입니다.UITextField 및 UIPickerView

프로그래밍 방식으로 UIPickerView를 만들고 UITextField가 touchUpInside 이벤트를 등록 할 때 생성 한 다음 UITextField에 resignFirstResponder를 알려주지 만 해킹 비트처럼 보일 수 있습니다.

"공식적인"또는 "올바른"방법이 있습니까?

감사합니다.

답변

6

당신은 (즉, 키보드를 보여주고있다)이 코드를 구현하고 기본 동작을 재정의 할 수 있습니다

#pragma mark - 
#pragma mark UITextFieldDelegate methods 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil 
                message:@"Bouh!" 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
    return NO; 
} 

대신 UIAlertView를 보여, 당신은뿐만 아니라 자신의 UIPickerView를 표시하고 일을 할 수 있습니다.

+0

@akosma 환상적인 아이디어! 키보드가 보이지 않는 것을 깨닫지 못했습니다. 키보드를 보여줄 [super textFieldShouldBeginEditing : textField]를 호출한다면, 맞습니까? –

+0

반드시 그렇지는 않습니다. textFieldShouldBeginEditing :은 위임 메서드이며 모든 계층 구조의 일부가 아닙니다. 키보드를 표시하려면 "YES"를 리턴해야합니다. 당신의 논리에서, 키보드를 표시할지 여부를 결정해야합니다 (YES 또는 NO로 트릭을 수행 함) –

+0

akosma에게 감사드립니다. 교체 키보드를 쓰려고 애써서 휴식을 취하는 동안 이것을 우연히 발견했습니다. 지연 FTW! – willc2