ios - 单点触控 : ResignFirstResponder() issues

标签 ios xcode uiscrollview xamarin.ios

我有一个存储多个 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/

相关文章:

ios - Swift 键盘似乎文本字段移动无法正常工作

xcode - 使用 Swift 解析 : this class is not key value coding-compliant for the key submit. '

iphone - 滚动时 ScrollView 中的振动

ios - UIScrollview 中的 ContentOffset 问题

ios - 如何获取之前的细胞计数

ios - Facebook SDK 好友列表请求

ruby - 无法让 CocoaPods 工作

xcode - Twilio iOS 无法识别的选择器发送到类

objective-c - View Controller 内的 View Controller 不会收到旋转消息 - ios

ios - 当协议(protocol)的可空性发生变化时支持多个 iOS SDK 版本