2014-02-18 5 views
0

키보드의 inputAccessoryView과 유사한 도구 모음을 사용하여 UIPickerView를 닫으려고합니다.UIPicker 하위보기가 입력을 인식하지 못합니다.

내 텍스트 필드와 내 선택기 모두에 대해 동일한 UIToolbar를 사용하고 있지만 텍스트 필드는 올바르게 닫히지 만 피커는 버튼을 만지는 것을 인식하지 못합니다.

내가 도구 모음 만들기 위해 사용하고있는 코드입니다 :

UIToolbar *tipToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; 
tipToolbar.barStyle = UIBarStyleDefault; 
UIBarButtonItem *donebtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignResponder:)]; 
tipToolbar.items = [NSArray arrayWithObjects: 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
        donebtn, nil 
]; 
[tipToolbar sizeToFit]; 
_outlet_txt_ipaddr.inputAccessoryView = tipToolbar; 
[_outlet_picker addSubview:tipToolbar]; 

을 그리고 이것은 키보드 나 피커 기각 할 작업입니다 :

- (IBAction)resignResponder:(id)sender{ 
    [_outlet_txt_ipaddr resignFirstResponder]; 
    [_outlet_picker resignFirstResponder]; 
} 

도구 모음은 선택기에 나타납니다 볼 수 있지만, 완료 버튼에 대한 내 탭은 애니메이션을 표시하지 않고 심지어 resignResonder 액션을 호출합니다.

답변

1

피커 뷰 [_outlet_picker resignFirstResponder]; 작동 안 할 것이다.

피커보기 용 대리자를 구현해야합니다.

당신이 선택 행에 피커보기를 해제 할 수이 코드를

UIToolbar *tipToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; 
tipToolbar.barStyle = UIBarStyleDefault; 
UIBarButtonItem *donebtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignResponder:)]; 
tipToolbar.items = [NSArray arrayWithObjects: 
       [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
       donebtn, nil 
]; 
[tipToolbar sizeToFit]; 
_outlet_txt_ipaddr.inputAccessoryView = tipToolbar; 

_outlet_picker.delegate=self; 
_outlet_picker.dataSource=self; 
_outlet_picker.showsSelectionIndicator=YES; 

[self.view addSubview:outlet_picker]; 

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 
{ 
return [pickerValueAry count]; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; 
{ 
NSMutableArray *ary = [[NSMutableArray alloc] initWithArray:pickerValueAry]; 
id str=[ary objectAtIndex:row]; 
return str; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{  
NSLog(@"selectedRowInPicker >> %d",row); 
} 

을 시도합니다.

+0

감사합니다. 이로 인해 내 문제가 해결되었습니다. –

관련 문제