【问题标题】:Using UIPickerView as inputView of a custom UIView使用 UIPickerView 作为自定义 UIView 的 inputView
【发布时间】:2014-09-16 22:12:09
【问题描述】:

我需要指导,因为我似乎误解了一些概念。 我想要实现的只是将 UIPickerView 作为 UITextField 的 inputView。 self.textField.inputView = self.pickerView 很容易做到这一点。这样做的问题是您仍然有一个闪烁的光标,并且带有 BT 键盘的设备仍然可以在文本字段中键入文本。 所以我已经阅读了可以充当急救人员的自定义 UIView。我将 UIView 子类化并添加了canBecomeFirstRespondercanResignFirstResponderbecomeFirstResponderresignFirstResponder,它们都返回是。问题是,当我点击视图时,什么也没有发生。 定义自定义 inputView 并没有帮助,它就像什么都没发生一样。

感谢任何指导。 谢谢, Z.

【问题讨论】:

    标签: inputview


    【解决方案1】:

    您需要创建自定义文本字段并覆盖以下方法。

    - (CGRect)caretRectForPosition:(UITextPosition *)position
    {
        return CGRectZero;
    }
    

    现在使用此自定义文本字段来创建您所需的文本字段并将其输入视图设置为选取器视图。上述方法将删除闪烁的光标。对于不从任何 BT 键盘输入的文本,您应该在 textfield 的委托方法中执行此操作

    //防止文本被蓝牙键盘复制粘贴或编辑。

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
            return NO;
    }
    

    【讨论】:

      【解决方案2】:

      1.创建(UIview)UIResponder类的子类

      2.redeclare inputview 为可读写

      @property (nonatomic, strong, readwrite) UIView *inputView;
      

      3.将 canBecomeFirstResponder 设置为 YES

      - (BOOL)canBecomeFirstResponder {
      return YES;
      }
      

      4.设置输入视图如datepicker

      self.inputView = self.datePicker;
      

      5.根据需要将 UIResponder 设置为 firstResponder

      [self becomeFirstResponder];
      

      5.你可以看到 datepicker 像键盘一样显示

      【讨论】:

        猜你喜欢
        • 2016-10-26
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多