我有一个与PickerView关联的UITextField(PickerView是textField的inputView) Il工作正常,但我想在我的TextField中禁止编辑(无法选择,复制文本,查看插入点,......)。 我在这里红色实现textField shouldChangeCharactersInRange,用于uITextField的委托,但它不起作用... 永远不会调用该方法,但是委托正确完成,因为如果我实现textFieldShouldBeginEditing,则会调用它。 有什么(简单的)方法可以做我想要的吗?
答案 0 :(得分:0)
提供您的for sub in reversed(list(t.subtrees())):
if sub.height() == 2 and sub[0].startswith("*"): # abbreviated test
parent = sub.parent()
while parent and len(parent) == 1:
sub = parent
parent = sub.parent()
print(sub, "will be deleted")
del t[sub.treeposition()]
ID,然后实施UITextField
委托。在这些委托中,检查textFieldShouldBeginEditing
ID,如果它与您想要的textField
匹配,请运行函数调用您的选择器视图并在textField
委托中返回false。
答案 1 :(得分:0)
以下内容不允许粘贴和剪切文本,除非结果完全是选择器的结果。例如,我假设这是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"
此外,如果您以编程方式将文本字段设置为字符串日期,则可能需要将textField的inputView
选取器与
func textFieldShouldBeginEditing(textField: UITextField) -> Bool
{
if let text = textField.text {
if let date = formatter.dateFromString(text) {
datePickerView.setDate(date, animated: true)
}
}
return true
}