textView 和 textField 被键盘挡住的问题

  • 在控制器的自定义的view里面添加一个textView, 设置textView的代理, 在这个view里面实现这方法就可以实现键盘上移, 逻辑很简单, 一点都不复杂, 根本不用通知什么的, 太麻烦, 太污染了.
- (void)textViewDidBeginEditing:(UITextView *)textView {
    
    CGRect frame = textView.frame;
    int offset = (frame.origin.y + frame.size.height + 62) - (self.frame.size.height-216.0);//键盘高度216  62是选择键盘上方选择文字的高度
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
    [UIView setAnimationDuration:0.30f];
    if (offset>0) {
        self.frame = CGRectMake(0.0f, -offset, self.frame.size.width, self.frame.size.height);
        [UIView commitAnimations];
    }
}

- (void)textViewDidEndEditing:(UITextView *)textView {
    self.frame = CGRectMake(0, 0, self.width, self.height);
}
  • 上面最核心的其实就是计算offset的值, 后面有注释
  • 至于textField也是类似的代理方法, 看懂了这个, 那个照着一套就可以了.

我是分割线


以上是做昨天写的, 昨晚朋友推荐神器IQKeyboardManager, 三方框架, 绝逼好用, 在AppDelegate.m里面写一次就好了, 建议用pod集成, 然后在

- (void)configureKeyboardMananger {
    IQKeyboardManager *mananger = [IQKeyboardManager sharedManager];
    mananger.enable = YES;
    mananger.shouldResignOnTouchOutside = YES;
    mananger.shouldToolbarUsesTextFieldTintColor = YES;
    mananger.keyboardDistanceFromTextField = 40;
    mananger.enableAutoToolbar = NO;
}

然后, 在下面的方法中调用, 就可以一劳永逸, 以后工程中所有的textView或者textField在召唤神龙的时候, 就再也不会被键盘遮挡了.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

以上属于 <小目标 · 一天一篇> 系列文章

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

相关阅读更多精彩内容

友情链接更多精彩内容