2013年1月27日日曜日

[iOS]text_fieldをクリックした際にUIPickerViewでキーボードを表示しない+そのあとの処理

shokugyoはtext_fieldの名前。ポイントはtextFieldShouldBeginEditingで処理させることです。
それから大抵rowで書いてるけど、わかりにくいんで、それぞれのピッカーの値をNSArrayでカスタムにいれているところまでの実装です。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
 if (textField == shokugyo) {
 
  [self showPicker];  //ピッカービューを開く
  
  return NO;  //キーボードを非表示
 }else{
  return YES;
 }
}

- (void)showPicker{
 //下から出るアニメーション
 [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration:0.2];
 [UIView setAnimationDelegate:self];
 picker.frame = CGRectMake(0, 204, 320, 216);
 [UIView commitAnimations];
}

- (void)hidePicker{
        //pickerを隠す
 [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration:0.2];
 [UIView setAnimationDelegate:self];
 picker.frame = CGRectMake(0, 420, 320, 216);
 [UIView commitAnimations];
}
//列の数
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
 return 1;
}
//行の数
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
 return 2;
}
//表示する値
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

 NSArray *pickerData = [NSArray arrayWithObjects:@"ra", @"ran", nil];
 return [pickerData objectAtIndex:row];  //row番号を指定
}
//選択時の変更処理
- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
 NSArray *pickerData = [NSArray arrayWithObjects:@"ra", @"ran", nil];
 shokugyo.text = [pickerData objectAtIndex:row];  //row番号のNSArrayから取り出す
 [self hidePicker];  //ボタンがおされ、text_fieldに入力されたらピッカーを隠す
}
//ピッカービューの設定ここまで