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() 问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 DialogViewController (Monotouch.Dialog) 上设置背景颜色
Monotouch 找不到 AudioFileOpenURL
MonoTouch:StoryBoarding - 手动转场?