一个简单的面向协议的键盘避免解决方案

我想共享一个整齐的即插即用键盘,避免针对iOS的解决方案,而我经常将其加入我的项目。 确保您的视图不会被键盘遮盖是iOS开发中的其中一项任务,您不必每次启动项目时都从头解决,如果不需要的话。 这也是我避免引入依赖项的原因,因为实现自己并不会花费太多时间。 诸如TPKeyboardAvoiding类的库在处理和处理边缘案例TPKeyboardAvoiding表现出惊人的效果,但是,如果库中存在错误或它不适用于您的设置,并且您不了解该解决方案的工作原理,那么在使用SOL之前,您几乎都是SOL维护人员可以修复它,或者您可以分叉库并自己修复错误-那时,我认为您也可以自行开发。

每个避免键盘的解决方案都取决于观察即将出现键盘时iOS发送的通知。 这些通知包含有关键盘的大小和位置的信息。 系统可以向您发送的四个通知如下:

  • UIKeyboardWillShowNotification
  • UIKeyboardDidShowNotification
  • UIKeyboardWillHideNotification
  • UIKeyboardDidHideNotification

如果视图在UIScrollView ,那么避免键盘只是调整contentOffset的问题,这样输入视图的框架就不会被键盘遮挡。

这是一个协议,描述了UIViewController为了避免键盘必须知道的所有运动部件。

而已! 当用户在输入之间进行导航时,您要做的就是保持对activeInputViewFrame重置,以使键盘activeInputViewFrame 。 全面披露,我还没有将它作为一种万能解决方案进行测试。 我在一些非常相似的视图层次结构中使用了此方法:您有一个UIScrollView约束到VC的边缘,该边缘具有一些包含UITextField / UITextView子视图。 您可能需要根据设置进行一些调整,但是希望通过在通知处理程序中设置一些断点来跟踪发生了什么问题很容易-这种解决方案的优点是非常简洁。

我希望这可以帮助您解除封锁或教会您一些新东西! 如果您有任何疑问,请随时在以下位置鸣叫我或发表评论。