如果(并且仅当用户)输入有效的电子邮件地址,我希望启用UITextField
键盘的返回键。
我尝试使用私有方法setReturnKeyEnabled
的{{3}}。不幸的是,这种方法似乎不再存在:
没有已知的选择器实例方法' setReturnKeyEnabled:'
如何以编程方式启用和禁用键盘的返回键?
答案 0 :(得分:1)
所有其他解决方案均未回答问题。 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")
}
答案 1 :(得分:0)
- (BOOL)textFieldShouldReturn:(UITextField *)textField
。代理中还有其他回调,例如您可能感兴趣的textField:shouldChangeCharactersInRange:replacementString:
,如果您尝试保持textField始终"正确"并且不允许用户在文本字段与您首选的格式/验证错误之后继续键入。绝对值得一看UITextFieldDelegate的文档,以获取所有可能的回调。
答案 2 :(得分:-1)
您实际上启用或禁用返回键。相反,如果用户按下返回键,则调用委托方法-textFieldShouldReturn:
。如果您想在这种情况下隐藏键盘,则必须在委托方法中的文本字段上调用-resignFirstResponder
。