我有一个存储多个 UIView 的 UIScrollView。当我的键盘弹出时,我正在使用 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);
我的问题是当我必须切换 View 时,我需要隐藏这个键盘。为此,我在我的 UITextField
上调用了 ResignFirstResponder()
。
- 如果我从不在
UITextField
中输入任何文本,这就可以正常工作。 - 如果我根本不滚动我的 View ,这一切都很好。
- 但是,如果输入了文本并且有滚动,我的
UIScrollView
会返回到它的原始大小,但它现在有一个滚动距离 * -1 的偏移量。因此,如果偏移量为 50,则现在为 -50。这意味着我的 View 顶部位于UIScrollView
下方 50 像素处。
如果我手动更新 UIScrollView
的偏移量,它不会执行任何操作。要真正解决这个问题,我必须在一个新的 UITextField
中单击,它会将我在这个 UIScrollView
中的所有 View 修复到它应该的样子。
非常感谢任何有关如何解决此问题的帮助!我正在从 5.0 更新到 5.1,希望这是一个有望修复的错误,但我的希望很低。
最佳答案
这不是您问题的解决方案,但可能是另一种实现功能的方法: 而不是调整大小,您只需滚动到该位置(因为您使用的是 UIScrollView)。 可以找到一个例子here .在示例中,您将覆盖 KeyboardGetActiveView 并返回应该可见的 View 。
关于ios - 单点触控 : ResignFirstResponder() issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598906/