【问题标题】:iOS 5 issues: Disappearing keyboard when pulling up a UITextViewiOS 5 问题:拉起 UITextView 时键盘消失
【发布时间】:2012-01-05 18:32:53
【问题描述】:

我在应用商店上有一个不错的小应用,它本身就很好用。在 iOS 5 出现之前,生活是美好的。现在,我的应用程序出现了一些我无法修复的问题,因为我不知道发生了什么,因为我觉得它们是 iOS 5 的问题,而不是我的。

有没有我错过的 iOS 5 转换手册?还是他们只是为了好玩而改变一切,想让我们弄清楚所有复活节彩蛋在哪里?

这是我遇到的一个问题(我浪费了很多时间试图解决),当我只是说我想以良好的 ol' 4.2 运行应用程序时根本不存在:

消失的键盘

所以当我拉出一个简单的模态视图时,我选择一个 tableView 单元格,然后我呈现一个 textView 以便用户可以输入一些文本。当 textView 变得可见时,我调用 [textView becomeFirstResponder];以便键盘启动并准备好供用户使用。这是第一次。然后,当你关闭 modalView(并得到我刚才提到的奇怪错误),然后尝试回到 modalView,然后拉起 textView,键盘飞走了!你看到它只有几分之一秒,然后它就消失了。我有一个 textView,我的光标处于活动状态并且我正在尝试编辑,但我的键盘拒绝显示。同样,这在 4.2 中完美运行,但在 5 中不行!

为了解决这些问题,我已尽一切努力,但我就是无法解决问题。我该怎么办?我觉得这些是操作系统方面的错误,不是我的!

感谢您的帮助。

编辑:

为了更清楚,我将回顾一下我试图通过我的视图层次结构完成的工作。当我显示我的模态视图时,我有两个不同的单元格,我用一些文本填充。第二个单元格应该是可编辑的,所以当用户点击单元格时,我取消隐藏我隐藏在 viewDidLoad 上的 UITextView,并调用 [textView becomeFirstResponder];在 textView 上,它工作正常。 textView 是可编辑的,它会在键盘关闭时隐藏和更新相应的单元格内容。

问题是,当我关闭模态视图,然后回到模态视图并选择可编辑单元格时,textView 显示得很好,并且它是可编辑的,但是键盘在屏幕上闪烁然后飞了离开,不会显示。所以我在那里有我的 textView 并且可以编辑,但尽我所能,键盘不会显示!这绝对让我抓狂,尤其是因为它在 iOS 4.2 上完美运行。

【问题讨论】:

  • 请注意您选择的标题 - 请参阅 stackoverflow.com/faq#howtoask。这次我已经编辑了你的问题。
  • 谢谢。抱歉,我想我只是有点得意忘形了。
  • 您也可以考虑将这些问题分解为单独的问题。
  • 我现在正在努力解决这些问题。谢谢
  • 这是这个问题的第二部分:stackoverflow.com/questions/8259843/…

标签: iphone keyboard ios5 uitextview modalviewcontroller


【解决方案1】:

我刚刚在 Apple 的开发者网站 this page 上发现。我不知道这是否正确,但有一些文档称为“iOS 4.x API diffs”。似乎是从 4.​​x 到 5.x 的差异列表。希望这能有所帮助。再见

【讨论】:

  • 您可以考虑研究与他的问题相关的 API 差异。好的答案很有帮助。 :)
  • 我知道我应该这样做,但问题是我没有足够的 iOS 编程经验来准确地寻找他/她需要的东西。对不起。
  • startupquote.com/post/2163563107(来自本网站的联合创始人 Jeff Atwood):)
【解决方案2】:

我觉得这与您呈现和关闭模态视图的方式有关。 Apple 引入了一种新方法来呈现视图。您可以尝试使用这些而不是旧的,看看它是否能解决您的问题。

这就是你要做的:

改变这个方法:

presentModalViewController:animated:

进入 iOS 5 引入的新首选方法:

presentViewController:animated:completion:

根据您是否使用dismissModalViewControllerAnimated:关闭您的视图,将其更改为dismissViewControllerAnimated:completion

这个方法也有完成处理程序,这对于在视图被呈现/关闭后做一些额外的工作非常有用。也许这也有助于解决您的其他问题。让我知道这是否有帮助。

【讨论】:

  • 嘿 d.,非常感谢您的回答。我继续更新了我的 present/dismiss 方法(以 nil 作为块),不幸的是它没有解决任何问题。我需要跑一个街区吗?我应该在里面做什么?谢谢!
  • 将 NULL 作为块传递。但这个伤口变化解决了我猜的问题。 “拉起TextView”是什么意思。你在使用任何手势吗?对我来说,听起来您的视图层次结构出了点问题。你能编辑你的问题并解释 viewControllers 层次结构是如何设置的吗?
  • 不幸的是,没有任何效果。我继续编辑了这个问题,以更好地解释我想要做什么。感谢您的帮助!
  • 很难猜出哪里出了问题。您可以显示加载视图、关闭视图以及显示和隐藏键盘的部分的一些代码 sn-ps。您是否使用键盘通知来调整表格视图单元格?也请尝试推送视图。使用视图不要设置左栏按钮图标,如果它仍在发生,请使用标准关闭视图并发布
【解决方案3】:

好的,我只是能够弄清楚大火中发生了什么。我将shouldAutorotateToInterfaceOrientation 值设置为BOOL 变量,该变量可以从TURE 或FALSE 更改,因此当modalView 回来时,它有可能不知道状态的状态/大小酒吧。通过手动将其设置为 TRUE,它解决了问题,并且问题消失了。

【讨论】:

  • 嗨 oof gwen,我遇到了同样的问题。你能更清楚你的解决方案吗? shouldAutorotateToInterfaceOrientation 返回一个 BOOL 是不是正确的方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多