[我希望在(且仅当)用户输入有效的电子邮件地址时启用UITextField
键盘的返回键。
我尝试过a solution that dates back from 2009,它使用私有方法setReturnKeyEnabled
。不幸的是,这种方法似乎不再存在:
选择器'setReturnKeyEnabled:的未知实例方法:
如何以编程方式启用和禁用键盘的返回键?
所有其他解决方案都无法回答问题。 OP希望将文本字段上的返回按钮“灰显”为对用户的视觉信号。
这是我的解决方案,可在iOS 13上使用。对于其他iOS版本,您可能需要稍作修改。
首先,我扩展UITextFieldDelegate
。
func getKeyboard() -> UIView?
{
for window in UIApplication.shared.windows.reversed()
{
if window.debugDescription.contains("UIRemoteKeyboardWindow") {
if let inputView = window.subviews
.first? // UIInputSetContainerView
.subviews
.first // UIInputSetHostView
{
for view in inputView.subviews {
if view.debugDescription.contains("_UIKBCompatInputView"), let keyboard = view.subviews.first, keyboard.debugDescription.contains( "UIKeyboardAutomatic") {
return keyboard
}
}
}
}
}
return nil
}
然后,每当我需要禁用“返回”键时,我们都可以做(用您的委托对象的变量名称替换delegate
:]]
if let keyboard = delegate.getKeyboard(){
keyboard.setValue(text == nil, forKey: "returnKeyEnabled")
}
您实际上不是enable