ios - 基于IOS swift中的复选框状态禁用/启用返回键
问题描述
我有一个带有文本字段和两个复选框的屏幕。当用户在文本字段中点击时,会出现键盘。我想根据以下条件启用/禁用软键盘上的返回键。
当文本字段不为空并且两个复选框都被选中时启用。当文本字段为空或未选中任何一个复选框时禁用。
有可能实现这一目标吗?
解决方案
创建按钮数组以存储复选框按钮的当前状态并将您的复选框按钮连接到此数组,它将用于获取按钮的当前状态
var getSelectedState: [UIButton] = []
使用first(where:)获取复选框按钮的当前状态
返回满足给定谓词的序列的第一个元素。
var handleButtonState : Bool{
var setState = false
if let getNotSelectedState = getSelectedState.first(where: { $0.isSelected == false }) {
print("get the non selectedState of button \(getNotSelectedState)")
setState = true
}
return setState
}
最后,您可以使用 UItextfield 委托启用/禁用返回键,使用enableReturnKeyAutomatically
一个布尔值,指示在用户输入文本时是否自动启用 Return 键。
// MARK: - Textfield delegates
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let currentText = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) else { return true }
textField.enablesReturnKeyAutomatically = !currentText.isEmpty && !handleButtonState ? true : false
return true
}
推荐阅读
- sql - 如何将数组传递给存储过程以便连续插入一些记录
- mysql - nodejs,expressjs和jade中没有获取参数
- android - 如何从选定的文件中获取详细信息?
- python - 将字符串分配给共享的多处理池数组
- http - HTTP 标头和正文之间有意外的填充
- java - 解析 Microsoft CRM Web API 返回的 Odata 值
- javascript - 带有 javascript 值的 CSS 过渡
- javascript - 如何:使用 AngularJS 递归循环遍历列表和子列表,查找数据
- programming-languages - 给定语言的乔姆斯基类型是什么?
- css - 网页不是 100% 宽度