我尝试在用户单击UITextField时使UIPickerView显示出来,我应该看到数据源和委托出口将它们与选取器相关联,但是,它当我打开nib文件时不退出 - >点击文件所有者 - >检查员 第二个问题是当我点击UItextField时键盘没有隐藏,虽然我做了一个textFieldShouldReturn
方法,它假设隐藏键盘。UIPickerview无法在界面生成器中找到委托和数据源插座
我在这里错过了什么?
.h文件:
@interface RechercherViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate,UITextFieldDelegate> {
IBOutlet UIPickerView *pickerTypesCarburants;
IBOutlet UIView *pickerViewTypesCarburants;
NSMutableArray *typesCarburantsArray;
IBOutlet UITextField *typeCarburantTextField;
}
-(IBAction)pickerTypeCarburantsShow;
-(IBAction)pickerTypeCarburantsDone;
@end
.m文件:
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [typesCarburantsArray count];
}
-(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger) component{
return [typesCarburantsArray objectAtIndex:row];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch;
touch=[touches anyObject];
CGPoint point=[touch locationInView:self.view];
if(CGRectContainsPoint([typeCarburantTextField frame],point))
{
[self pickerTypeCarburantsShow];
}
}
-(IBAction)pickerTypeCarburantsDone{
NSInteger selectedRow=[pickerTypesCarburants selectedRowInComponent:0];
NSString *item=[typesCarburantsArray objectAtIndex:selectedRow];
typeCarburantTextField.text=[NSString stringWithFormat:@"%@",item];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
CGAffineTransform transform=CGAffineTransformMakeTranslation(0, 480);
pickerViewTypesCarburants.transform=transform;
[UIView commitAnimations];
}
-(IBAction)pickerTypeCarburantsShow{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
CGAffineTransform transform=CGAffineTransformMakeTranslation(0, 240);
pickerViewTypesCarburants.transform=transform;
[self.view addSubview:pickerViewTypesCarburants];
[UIView commitAnimations];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
嗨,thx为您的答案,但我确实喜欢你说,没有什么改变:(和你的问题,我会说我的应用程序的要求迫使我这样做 – Malloc 2011-04-16 17:28:04
嗨,你可以尝试为UITextField实现' - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField'委托并返回NO - 这应该防止textField变得可编辑,从而防止键盘出现在第一位置。或者,尝试设置UserInteractionEnabled物业给NO。 – 2011-04-16 23:03:37