iOS浮动文本输入框

有时间了来整理一下一些小工具。


iOS的文本输入框默认是不会随键盘浮动的,所以在屏幕下方的文本输入控件,在输入时会被弹出的键盘挡住从而看不到输入的结果。网上也有很多解决的方案不多说,大家都比我讲得明白。

在这里记录并分享自己的小工具FloatableKeyboard
下载地址:https://github.com/anjohnlv/FloatableKeyboard
(已更新,之前的版本默认开启了所有控件的浮动,可能会引起未知问题。)

使用方法:

1、直接使用: 下载FloatKeyboard,使用或继承FKTextFieldView或FKTextView。
2、自定义使用: 导入分类UIView+FloatKeyboard,对需要浮动的控件设置view.floatable = YES;。

这个小工具支持UITextField,UITextView,以及其他需要获取焦点进行交互的控件。
支持autolayout,autosizing,支持代码,也支持interface builder。
如果有什么bug欢迎斧正。


原理其实很简单,就是监听到键盘的显示和隐藏事件。然后获取出键盘高度,再根据屏幕高度和控件位置计算出需要浮动的距离。主要用到一个方法就是坐标映射。

- (void)keyboardWillShow:(NSNotification *)notification {
    CGFloat keyboardHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
    CGFloat screenHeight = [[[UIApplication sharedApplication]keyWindow]bounds].size.height;
    CGFloat selfBottom = [self.superview convertRect:self.frame toView:[self viewController].view].origin.y + self.frame.size.height;
    CGFloat offset = selfBottom+keyboardHeight-screenHeight;
    double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    if(offset > 0) {
        [UIView animateWithDuration:duration animations:^{
            [self viewController].view.frame = CGRectMake(0.0f, -offset, [self viewController].view.frame.size.width, [self viewController].view.frame.size.height);
        }];
    }
}

说完了。

gif.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,286评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,029评论 25 709
  • 古希腊是西方文明之母,歌剧的母体当然是古希腊戏剧Ancient Greek drama 坐在这里看戏,将是怎样的体...
    津城燕窝Donna阅读 677评论 0 1
  • 罗胖六十秒概述 2017年6月5日: 红桃皇后假说:在我们这个地方,你必须不停地奔跑,才能留在原地。进化中的物种在...
    Y先生说阅读 1,024评论 0 1
  • 很早就想写一篇关于办理马来西亚劳工签的一些事儿。以下均属亲身经历真实体验。 简单自我介绍一下某中字头央企搬砖...
    DD大橙则阅读 752评论 0 1

友情链接更多精彩内容