0

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

任何指导表示赞赏。谢谢,Z。

4

2 回答 2

1

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

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

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

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

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        return NO;
}
于 2014-09-18T11:24:29.650 回答
0

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.你可以看到像键盘一样的日期选择器显示

于 2018-03-06T06:21:22.477 回答