如何在使用shouldChangeCharactersInRange函数时使特定文本字段不可编辑

时间:2015-08-05 14:15:23

标签: ios swift uitextfielddelegate

我正在使用包含4个文本字段的注册页面。其中一个text fields用作Picker-view,当tap上的用户picker-view会弹出一个可供选择的选项时。

问题是如何制作特定的textfield uneditable? (不是所有的文本字段)。

我尝试使用

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

return false
}

但问题是它使我的所有文本字段都不可编辑。

我也无法使用textField.userInteractionEnabled = false,因为我无法点按文字字段来显示picker-view

谢谢你。

2 个答案:

答案 0 :(得分:1)

将您不想编辑的文本字段的引用与您在方法的参数中获得的引用进行比较。

if self.uneditableTextField == textField {
     //do not edit
}

您也可以将guard用于此类目的

答案 1 :(得分:1)

您可以保留对文本字段的引用,并在委托方法中与其进行比较:

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
    if textField == self.myTextField {
         return false 
    }
    return true
}

我采用的另一个选项是在文本字段的顶部放置一个UIView,用手势识别器拦截触摸并调用选择器或执行你想要在触摸场时执行的任何代码。