使用UIPickerView作为自定义UIView的inputView

时间:2014-09-16 22:12:10

标签: inputview

我需要指导,因为我似乎误解了一些概念。 我想要实现的是将UIPickerView作为UITextField的inputView。这可以通过self.textField.inputView = self.pickerView轻松完成。这样做的问题是你仍然有一个闪烁的光标,并且具有BT键盘的设备仍然可以在文本字段中键入文本。 所以我读到了可以作为第一响应者的自定义UIViews。我已经将UIView子类化并添加了canBecomeFirstRespondercanResignFirstResponderbecomeFirstResponderresignFirstResponder,所有这些都返回是。问题是,当我点击视图时,没有任何反应。 定义自定义inputView并没有帮助,它就像没有发生任何事情一样。

感谢任何指导。 谢谢, ž。

2 个答案:

答案 0 :(得分:1)

您需要创建自定义TextField并覆盖以下方法。

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

现在使用此自定义文本字段创建所需的Textfield并将其输入视图设置为pickerview。上面的方法将删除闪烁的光标。对于不从任何BT键盘输入的文本,你应该在textfield的委托方法中这样做

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

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

答案 1 :(得分:0)

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

2.redeclare inputview as read-write

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

3.set canBecomeFirstResponder为YES

- (BOOL)canBecomeFirstResponder {
return YES;
}

4.设置输入视图,例如datepicker

self.inputView = self.datePicker;

5.在您需要时将UIResponder设置为firstResponder

[self becomeFirstResponder];

5.你可以看到像键盘一样的日期选择器显示