【问题标题】:How to temporarily disable user interaction from all textfields if one is being edited?如果正在编辑一个文本字段,如何暂时禁用所有文本字段的用户交互?
【发布时间】:2019-09-18 09:21:58
【问题描述】:

如果当前正在编辑 ViewController 上的所有文本字段,是否有办法暂时禁用交互和输入。键盘或 UIPicker 消失后,我希望再次启用 textField 交互。

我了解禁用我可以使用的触摸交互:

textField.isUserInteractionEnabled = false

但是,如果我也有 textField2textField3,我该如何暂时在编辑 textfield1 时禁用两个文本字段的用户交互?

【问题讨论】:

  • 你为什么要这样做?理想的情况是使用textDidBeginEditingtextDidEndEditing 处理用户点击其他文本字段

标签: ios swift input


【解决方案1】:

为所有文本字段创建出口集合,如

@IBOutlet var textFs:[UITextField]! 

然后将 vc 设置为viewDidLoad中所有这些的委托

textFs.forEach { $0.delegate = self }

实施

func textFieldDidBeginEditing(_ textField: UITextField) { 
   textFs.forEach {
     if $0 != textField {
       $0.isUserInteractionEnabled = false
    }
  }
}

func textFieldDidEndEditing(_ textField: UITextField) {
   textFs.forEach {  $0.isUserInteractionEnabled = true }
}

【讨论】:

  • 我收到错误,“UITextField?”类型的值?没有成员“forEach”
  • textFs 应该是一个数组 textFs:[UITextField]! 并将 IB 中的所有文本字段连接到它
  • 我已经创建了集合,我的不包括弱,@IBOutlet var textFs: [UITextField]!
  • 目前的问题是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多