以 pickerview 作为第一响应者的 UItextfield ios
UItextfield with pickerview as firstresponder ios
我有一个 UITextField,点击它时需要显示一个 UIPickerView。此外,在 pickerview 中选择的数据将被插入到文本字段中。为了实现它,我现在使用 subhajit 的 SHPickerField.
试试这个
let myPicker = UIPickerView()
@IBOutlet var myText: UITextField!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
myText.inputView = myPicker
}
@IBAction func textPiker(_ sender: UITextField) {
sender.inputView = myPicker
}
我确实创建了一个UITextField的子类,很容易实现和使用。这里是 GitHub link:
访问https://github.com/subhajitregor/SHPickerFieldExample
请查看示例以了解如何使用。自述文件现在也更新了。
借助此代码,您还可以打开多个文本字段。
.h
UIPickerView *monthPickerView;
@property (strong, nonatomic)NSArray *monthArray;
@property (retain, nonatomic) IBOutlet UITextField *monthTextField;
.m
self.monthArray=[[NSArray alloc] initWithObjects:@"one",@"two", nil];
self.monthTextField.delegate=self;
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
[self showPicker:textField];
else if(textField==_monthTextField){
if(self.monthTextField.text.length>=1){
[monthPickerView selectRow:[self.monthArray indexOfObject:self.monthTextField.text] inComponent:0 animated:NO];
}
}
return YES;
}
//**************show picker**************
- (IBAction)showPicker:(id)sender {
UITextField *textField=(UITextField *)sender;
monthPickerView = [[UIPickerView alloc] init];
monthPickerView.showsSelectionIndicator = YES;
monthPickerView.dataSource = self;
monthPickerView.delegate = self;
pickerToolbar = [[UIToolbar alloc] init];
pickerToolbar.barStyle = UIBarStyleBlackTranslucent;
[pickerToolbar sizeToFit];
//to make the done button aligned to the right
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:self
action:@selector(doneClicked:)];
[pickerToolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];
if(textField==_monthTextField){
monthPickerView.tag=;
self.monthTextField.inputView = monthPickerView;
self.monthTextField.inputAccessoryView = pickerToolbar;
}
}
-(void)doneClicked:(id) sender
{
[self.view endEditing:YES];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
return 1;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if(pickerView.tag==1){
self.monthTextField.text = [_monthArray objectAtIndex:row];
}
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
if(pickerView.tag==1){
return [_monthArray count];
}
return 0;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
{
if(pickerView.tag==1){
return [_monthArray objectAtIndex:row];
}
return 0;
}
我有一个 UITextField,点击它时需要显示一个 UIPickerView。此外,在 pickerview 中选择的数据将被插入到文本字段中。为了实现它,我现在使用 subhajit 的 SHPickerField.
试试这个
let myPicker = UIPickerView()
@IBOutlet var myText: UITextField!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
myText.inputView = myPicker
}
@IBAction func textPiker(_ sender: UITextField) {
sender.inputView = myPicker
}
我确实创建了一个UITextField的子类,很容易实现和使用。这里是 GitHub link:
访问https://github.com/subhajitregor/SHPickerFieldExample
请查看示例以了解如何使用。自述文件现在也更新了。
借助此代码,您还可以打开多个文本字段。
.h
UIPickerView *monthPickerView;
@property (strong, nonatomic)NSArray *monthArray;
@property (retain, nonatomic) IBOutlet UITextField *monthTextField;
.m
self.monthArray=[[NSArray alloc] initWithObjects:@"one",@"two", nil];
self.monthTextField.delegate=self;
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
[self showPicker:textField];
else if(textField==_monthTextField){
if(self.monthTextField.text.length>=1){
[monthPickerView selectRow:[self.monthArray indexOfObject:self.monthTextField.text] inComponent:0 animated:NO];
}
}
return YES;
}
//**************show picker**************
- (IBAction)showPicker:(id)sender {
UITextField *textField=(UITextField *)sender;
monthPickerView = [[UIPickerView alloc] init];
monthPickerView.showsSelectionIndicator = YES;
monthPickerView.dataSource = self;
monthPickerView.delegate = self;
pickerToolbar = [[UIToolbar alloc] init];
pickerToolbar.barStyle = UIBarStyleBlackTranslucent;
[pickerToolbar sizeToFit];
//to make the done button aligned to the right
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:self
action:@selector(doneClicked:)];
[pickerToolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];
if(textField==_monthTextField){
monthPickerView.tag=;
self.monthTextField.inputView = monthPickerView;
self.monthTextField.inputAccessoryView = pickerToolbar;
}
}
-(void)doneClicked:(id) sender
{
[self.view endEditing:YES];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
return 1;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if(pickerView.tag==1){
self.monthTextField.text = [_monthArray objectAtIndex:row];
}
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
if(pickerView.tag==1){
return [_monthArray count];
}
return 0;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
{
if(pickerView.tag==1){
return [_monthArray objectAtIndex:row];
}
return 0;
}