【问题标题】:UIPickerView as inputView of UITextFieldUIPickerView 作为 UITextField 的 inputView
【发布时间】:2014-01-11 12:21:05
【问题描述】:

我已经阅读了很多关于如何将UIPickerView 用作我的UITextFieldinputView 的内容。问题是,当我点击UITextField 时,我可以拨打UIPickerView。但是,我的应用程序总是加载显示的UIPickerView。我已经尝试在viewDidLoad 中更改myownpickerview.hidden = YES;,但是当我单击UITextField 时会出现问题。它不会显示,如果我点击多次,调试器显示会有错误。

谁能指出我正确的方向?我只希望在点击UITextField 后显示UIPickerView

我仍在开发我的第一个 iOS 应用。请耐心等待。谢谢=)

【问题讨论】:

  • 欢迎来到 iOS 开发,这是一个很棒的地方!你从哪里读到的?
  • 是的,你在 textFieldShouldBeginEditing 中调用了pickerview
  • @meaning-matters 我在 stackoverflow 上阅读了所有这些内容。有很多很棒的人的好地方=D

标签: ios iphone objective-c uitextfield uipickerview


【解决方案1】:

使用 Swift:

let pickerView = UIPickerView()
pickerView.dataSource = self
pickerView.delegate = self
textField.inputView = pickerView;

别忘了实现UIPickerViewDataSourceUIPickerViewDelegate

【讨论】:

    【解决方案2】:

    这样使用,

     // Picker
    UIPickerView *picker = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,150)];
    picker.dataSource = self;
    picker.delegate = self;
    
    // Tool bar
    UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,35)];
    pickerToolbar.barStyle = UIBarStyleDefault;
    
    // Bar button
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDoneButtonTapped:)];
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    [pickerToolbar setItems:@[flexSpace,doneButton]];
    
    self.selectedLockerTextFiled.inputAccessoryView = pickerToolbar;
    self.selectedLockerTextFiled.inputView = picker;
    

    完成按钮操作的代码如下,

    -(void)pickerDoneButtonTapped:(id)picker{
        [self.view endEditing:YES];}
    

    【讨论】:

      【解决方案3】:

      试试这个,效果很好,放到viewdidload中。

      yourpicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 50, 100, 150)];
          [yourpicker setDataSource: self];
          [yourpicker setDelegate: self];
          yourpicker.showsSelectionIndicator = YES;
          self.yourtextfield.inputView = yourpicker;
      

      不要 [self.view addSubview: yourpicker];这个

      【讨论】:

      • 我不确定如何处理框架。我应该把它放在屏幕外吗?如果是这样,当我点击UITextField时它会回来吗?怎么办?谢谢!
      • SilverHood,它不应该在用户点击 UITextField 之前显示。也许您正在其他地方分配另一个 UIPickerView?代码应该只使用这个。
      • 我已经编辑了我的答案并写了一个注释检查或不添加pickerview作为子视图。
      • @auspicious99 我使用情节提要创建了UIPickerView 是否重要?我把它拖放到那里。现在,如果我不在我的 UIPickerView 名称前添加 self.,我会收到错误
      • @SilverHood 您应该以编程方式创建UIPickerView,作为视图控制器中的属性。例如,@property (strong, nonatomic) UIPickerView *yourPicker;。另外,不需要设置框架,你可以这样做self.yourPicker = [[UIPickerView alloc] init];
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多