以编程方式变灰返回键

问题描述 投票:0回答:3

[我希望在(且仅当)用户输入有效的电子邮件地址时启用UITextField键盘的返回键。

我尝试过a solution that dates back from 2009,它使用私有方法setReturnKeyEnabled。不幸的是,这种方法似乎不再存在:

选择器'setReturnKeyEnabled:的未知实例方法:

如何以编程方式启用和禁用键盘的返回键?

ios ios8 uitextfield uikeyboard ios8.3
3个回答
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")
}

0
投票
  1. 在UITextField上设置委托

-1
投票

您实际上不是enable

© www.soinside.com 2019 - 2024. All rights reserved.