2013-04-19 2 views
0

UITextField과 함께보기가 있고 버튼을 누르면 UIDatePicker (키보드 아래에 표시됨)을 표시해야합니다.iOS 이상한 키보드 숨기기 동작이 하위보기를 추가 할 때

날짜 선택 도구를 지연 인스턴스화하는 이유는보기 속도를 더 빠르게 표시 할 수 있기 때문입니다. 무엇 발생하는이 키보드 숨어있는 애니메이션을 방해한다는 것입니다

- (IBAction)hideKeyboard { 
    if (!self.datePicker) { 
     // UIDatePicker allocation and initialization 
     self.datePicker = ... 
     ... 
     [self.view addSubview:self.datePicker]; 
    } 
    [self.textField resignFirstResponder]; 
} 

:

은 버튼을 탭과 관련된 코드입니다. 사실 전혀 애니메이션이 없습니다.

내가 가진 또 다른 단서는 시뮬레이터에서는 발생하지 않지만 실제 장치 (iPhone 4S)에서만 발생한다는 것입니다.

어떻게 해결할 수 있습니까?

편집 :

내 문제가 해결되지 않는 텍스트 필드의 inputView으로 날짜 선택기를 설정.

+0

대답을 – Mert

답변

1

키보드를 숨기고 버튼을 사용하여 날짜 선택 도구를 표시하는 다른 해결책을 추천 할 수 있습니다.

정확하게 이해했다면 사용자가 텍스트 필드를 탭하면 날짜 선택기를 표시하고 텍스트 필드에 날짜를 설정하려고합니다.

의 UITextField는 속성을

@property을 가지고 (READWRITE, 유지) 그런 다음 텍스트 필드가 (날짜 선택 대신 키보드를 표시합니다 날짜 선택에 inputView의 속성을 설정하면 UIView의 * inputView

을 심지어 키보드처럼 움직이는 애니메이션).

물론 값을 직접 가져와 텍스트 필드로 설정해야합니다.

편집 이유는 : 질문 도움이되지 않았다 입력보기로 날짜 선택기를 설정하는 이유를 모르겠어요

을 편집했다. 당신은 키보드 표시를 원하는 대리자 메서드를 구현

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

의 UITextField

다음 대리자 메서드를 사용할 수있는 하위 뷰를 추가하여 날짜 선택기를 표시하지 않습니다 어쨌든합니다. 이 방법에서는 뷰에 하위 뷰로 pickerview를 추가하고 키보드를 표시하지 않으려면 NO를 반환합니다.

편집 이유 : 칭찬

사용자가 텍스트 필드를 사용하지 않는 어떤 이유가 있습니까? 그렇지 않다면 모든 것을 더 쉽게 만들어주기 때문에 그것을 사용할 것입니다. 어떤 이유로 UILabel을 사용하려면 키보드 알림을 볼 수 있습니다. 언제 키보드가 disapeared하고 datepicker을 보여 줬어.

는 그냥 텍스트 필드의 입력 값으로 날짜 선택 개체를 추가 : 키보드 알림

여기를 참조하십시오, 좋은 샘플 코드와 설명, UIKeyboardDidHideNotification은 아주 간단한 당신에게

http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

+0

업데이트했습니다. 내가 원하는 부분이 아니지만 문제를 더 잘 해결할 수있을 것입니다. – Francesco

+0

datePicker는 textField의 값을 수정하지 않습니다 (내 선택). inputView 메소드가 도움이되지 않는 이유입니다. – Francesco

+0

@Francesco 다시 답변을 업데이트했습니다. – Mert

0

을 도움이 될 것입니다 . 키보드를 표시하거나 숨길 필요가 없습니다.

UIDatePicker *datePicker = [[UIDatePicker alloc] init]; 
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar] ; 
NSDate *currentDate = [NSDate date]; 
NSDateComponents *comps = [[NSDateComponents alloc] init] ; 
[comps setYear:anyInteger]; 
NSDate *maximumDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0]; 
[comps setYear:anyInteger; 
NSDate *minimumDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0]; 
[datePicker setMaximumDate:maximumDate]; 
[datePicker setMinimumDate:minimumDate]; 
datePicker.datePickerMode = UIDatePickerModeDate; 
textField.inputView = datePicker; 
관련 문제