带有 PickerView 的 UITextField:不允许编辑

Posted

技术标签:

【中文标题】带有 PickerView 的 UITextField:不允许编辑【英文标题】:UITextField with PickerView: Don't allow editing 【发布时间】:2015-11-28 22:09:42 【问题描述】:

我有一个与 PickerView 关联的 UITextField(PickerView 是 textField 的 inputView) Il 工作正常,但我想禁止在我的 TextField 中进行编辑(无法选择、复制文本、查看插入点……)。 我在这里为 uITextField 的委托实现 textField shouldChangeCharactersInRange,但它不起作用... 该方法从未被调用,但委托已正确完成,因为如果我实现 textFieldShouldBeginEditing,它就会被调用。 有什么(简单的)方法可以做我想做的事吗?

【问题讨论】:

这个答案对我不起作用,所以我再次发布...... 【参考方案1】:

提供您的UITextField id,然后实现textFieldShouldBeginEditing 委托。在这些委托中,检查textField id,如果它与您想要的textField 匹配,运行函数来调用您的选择器视图并在textFieldShouldBeginEditing 委托中返回false。

【讨论】:

【参考方案2】:

除非结果完全是选择器的结果,否则以下内容不允许粘贴和剪切文本。例如,我假设这是UIDatePicker

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool

    return string == formatter.stringFromDate(datePickerView.date)

格式化程序类似于

    let formatter = NSDateFormatter()
    formatter.locale = NSLocale.currentLocale()
    formatter.dateFormat = "dd/MM/yyyy"

此外,如果您以编程方式将文本字段设置为字符串日期,您可能希望将文本字段的 inputView 选择器与

func textFieldShouldBeginEditing(textField: UITextField) -> Bool

    if let text = textField.text 
        if let date = formatter.dateFromString(text) 
            datePickerView.setDate(date, animated: true)
        
    
    return true

【讨论】:

以上是关于带有 PickerView 的 UITextField:不允许编辑的主要内容,如果未能解决你的问题,请参考以下文章

带有pickerview的UItextfield作为第一响应者ios

Arry,如何设置带有 4 个组件的pickerView?迅速

关于 iOS 辅助功能。如何将焦点转移到pickerView

没有从 PickerView 获取选定的值

组件与工具栏和pickerview冲突[关闭]

谈谈-Android-PickerView系列之介绍与使用