how to show pickerview in uitextfield not the keyboard?

后端 未结 5 512
旧时难觅i
旧时难觅i 2021-01-31 23:38

I want to show a UIPickerView on becoming FirstResponder of a UITextfield not the keyboard and fill the value in text field form the picker view.

any one knows this?

5条回答
  •  执念已碎
    2021-02-01 00:02

    Hey I have pasted in some code I wrote a while back to cover this scenario. There are two examples one with an actionsheet and one without an actionsheet:

    - (void)textFieldDidBeginEditing:(UITextField *)myTextField{
    
                 [myTextField resignFirstResponder];
    
                 actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
    
                 [actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
    
                 CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
    
                 UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
    
                  pickerView.showsSelectionIndicator = YES;
    
                  pickerView.dataSource = self;
    
                  pickerView.delegate = self;
    
                  [actionSheet addSubview:pickerView];
    
                  [pickerView release]; //NB this may result on the pickerview going black the next time you come back to the textfield, if this is the case just remove this statement
    
                  UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:NSLocalizedString(@"SUBMIT", @"")]];
    
                  closeButton.momentary = YES;
    
                   closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
    
                   closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
    
                   closeButton.tintColor = [UIColor blackColor];
    
                   [closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged];
    
                   [actionSheet addSubview:closeButton];
    
                   [closeButton release];
    
                   [actionSheet showInView:displayedInView];
    
                   [actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
    
    }
    

    This is the code without the actionsheet:

    - (void)textFieldDidBeginEditing:(UITextField *)myTextField{
    
             [myTextField resignFirstResponder];
    
              for (int component = 0;  component < (((NSInteger)numberOfComponentsForPickerView) - 1); component++) {
    
                  NSInteger valueForRow = [[self.textField.text substringWithRange:NSMakeRange(component,1)] integerValue];
    
                   [pickerView selectRow:valueForRow inComponent:component animated:YES];
    
              }
    
               [self fadeInPickerView];
    
                [view addSubview:pickerView];
    
                [pickerView release];
    
    }
    

    An more detailed example of this can be found at: http://www.buggyprogrammer.co.uk/2010/08/18/open-uipickerview-when-user-enters-textfield/

提交回复
热议问题