MonoTouch:ResignFirstResponder() 问题

Posted

技术标签:

【中文标题】MonoTouch:ResignFirstResponder() 问题【英文标题】:MonoTouch: ResignFirstResponder() issues 【发布时间】:2011-12-22 02:45:52 【问题描述】:

我有一个 UIScrollView,它存储了几个 UIView。当我的键盘弹出时,我正在使用UIKeyboardDidShowNotification 调整此UIScrollView 的大小,以便我的可视内容区域仅是键盘上方的内容。我这样做:

contentArea.Frame = new System.Drawing.RectangleF(0, contentArea.Frame.Top, 1024, 768 - contentArea.Frame.Top - r.Height);      

现在当键盘正常消失并且UIKeyboardWillHideNotification 触发时,我可以使用以下命令轻松重置它,并且效果很好:

contentArea.Frame = new System.Drawing.RectangleF(0, contentArea.Frame.Top, 1024, 627); 

我的问题是当我必须切换视图时,我需要隐藏这个键盘。为此,我在UITextField 上致电ResignFirstResponder()

如果我从未在UITextField 中输入任何文本,则可以正常工作。 如果我根本不滚动视图,这一切正常。 但是,如果输入了文本并且有滚动,我的UIScrollView 将返回到它的原始大小,但它现在有一个滚动距离 * -1 的偏移量。因此,如果偏移量是 50,那么现在是 -50。这意味着我的视图顶部在 UIScrollView 下方 50 像素。

如果我手动更新UIScrollView 的偏移量,它不会做任何事情。要真正解决这个问题,我必须在一个新的UITextField 内单击,它会将我在这个UIScrollView 中的所有视图修复为应有的状态。

非常感谢任何有关如何解决此问题的帮助!我正在从 5.0 更新到 5.1,希望这是一个希望已修复的错误,但我的希望很低。

【问题讨论】:

【参考方案1】:

这不是解决您的问题的方法,但可能是另一种归档功能的方法: 而不是调整大小,您只需 scoll 到该位置(因为您使用的是 UIScrollView)。 可以在here 找到一个示例。在示例中,您将覆盖 KeyboardGetActiveView 并返回应该可见的视图。

【讨论】:

以上是关于MonoTouch:ResignFirstResponder() 问题的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch:了解委托机制模式

如何在 DialogViewController (Monotouch.Dialog) 上设置背景颜色

Monotouch 找不到 AudioFileOpenURL

MonoTouch:StoryBoarding - 手动转场?

MonoTouch 中的 ViewForZoomingInScrollView

MonoTouch 4.0 使用模拟器抛出 ReflectionTypeLoadException