gpt4 book ai didi

ios - 如何禁用键盘而不将其隐藏在 iOS 中?

转载 作者:行者123 更新时间:2023-11-28 06:23:54 25 4
gpt4 key购买 nike

我有一个包含各种元素的屏幕,包括一个 UITextField,我想在屏幕上显示教练标记(我正在使用 Instructions 库)。但是,我需要在显示教练标记时卡住与元素的交互(例如,这样用户就无法在文本字段中键入内容)。

我的问题是键盘(总是显示在这个屏幕上):如果我只是将文本字段的 isEnabled 属性设置为 false,或设置 isUserInteractionEnabled = false,该字段将退出第一响应者并且键盘消失,这是不自然的对于这个屏幕。但是,如果我使用 textField:shouldChangeCharactersIn range: delegate 方法并返回 false,则键盘仍然可见,但已启用。因此,当教练标记出现时,用户可以在键盘周围轻敲。虽然这对文本字段没有影响,但它仍然很奇怪和烦人。

那么如何暂时保持键盘向上,但禁用它(最好在教练标记模糊 View 后面)?我看到了this ,但这并未提供我认为 Apple 会接受的解决方案。

谢谢,

亚里夫。

最佳答案

您可以在键盘可见时动态添加一个UIButton。您可以添加 keyboardDidShowkeyboardDidHide 观察者以了解键盘何时启动并可见。

您可能会遇到与键盘位于屏幕最顶部相关的问题,但是您可以通过将新添加的 UIButton 设置为当前 View /窗口的最顶部来解决这个问题。

不要忘记为 UIButton 设置 userInteractionEnabledfalse

@MikeAlter 对您的问题的评论将是最好(和干净)的解决方案。但是,这也意味着您无法控制与屏幕上其他控件的导航/交互。


编辑

键盘在显示时会覆盖屏幕上的特定区域。我的解决方案建议您可以在 View 上添加一个 UIButton,其矩形/框架与键盘完全相同。覆盖整个键盘的 View /按钮。因此,您的键盘不会进行任何用户交互。

以下代码可以获得键盘的大小。您可以在完全相同的位置添加相同大小的 UIButton,这将使您的键盘处于非事件状态,因为用户交互将由按钮本身负责。

- (void)keyboardDidShow:(NSNotification *)notification {
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

int height = MIN(keyboardSize.height,keyboardSize.width);
int width = MAX(keyboardSize.height,keyboardSize.width);

... Add UIButton here with the CGRect of keyboard
}

您需要注册到 UIKeyboardDidShowNotification 才能正常工作,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShow:)
name:UIKeyboardDidShowNotification
object:nil];

关于ios - 如何禁用键盘而不将其隐藏在 iOS 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42572821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com