1.如果是H5中只有一个input 参考 https://juejin.im/post/5bfcbaccf265da615e0526ca
/// 监听将要弹起 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardShow) name:UIKeyboardWillShowNotification object:nil]; /// 监听将要隐藏 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardHidden) name:UIKeyboardWillHideNotification object:nil]; /** 键盘谈起屏幕偏移量 */ @property (nonatomic, assign) CGPoint keyBoardPoint; #pragma mark - addObserverKeyboard /// 键盘将要弹起 - (void)keyBoardShow { CGPoint point = self.webView.scrollView.contentOffset; self.keyBoardPoint = point; } /// 键盘将要隐藏 - (void)keyBoardHidden { self.webView.scrollView.contentOffset = self.keyBoardPoint; }
2.如果有多个input 就会出现很严重的问题,页面会下拉回去的动作,用户体验很不好。尝试了多种方法,找到了一种解决方案。
@property (nonatomic,assign) BOOL keyBoardHide; /// 监听将要弹起 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardShow) name:UIKeyboardWillShowNotification object:nil]; /// 监听将要隐藏 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardHidden:) name:UIKeyboardWillHideNotification object:nil]; #pragma mark - addObserverKeyboard / 键盘将要弹起 - (void)keyBoardShow { self.keyBoardHide = NO; } / 键盘将要隐藏 - (void)keyBoardHidden:(NSNotification *)notification{ self.keyBoardHide = YES; CGFloat actionDelayTime = 0.04; __block double pianYi = self.webView.scrollView.contentOffset.y + DEVICE_HEIGHT - self.webView.scrollView.contentSize.height; __block CGPoint ontentOffset = CGPointMake(0, self.webView.scrollView.contentSize.height - DEVICE_HEIGHT); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(actionDelayTime * NSEC_PER_SEC)),dispatch_get_global_queue(0, 0), ^{ if (self.keyBoardHide) { NSDictionary *userInfo = notification.userInfo; // 动画的持续时间 double duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; if (@available(iOS 12.0, *)) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((duration-actionDelayTime) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [UIView animateWithDuration:(duration-actionDelayTime) animations:^{ UIScrollView *scrollView = [self.webView scrollView]; if (pianYi > 0) { [scrollView setContentOffset:ontentOffset]; } }]; }); } } }); }
试过了,超好用
发表评论
相关推荐
iOS11 WKWebView 无法加载内容的解决方法 WKWebView 是 iOS 中的一个网页视图控件,自 iOS 8 开始引入,取代了 UIWebView。WKWebView 提供了更好的性能和安全性,但是在 iOS 11 中,却出现了加载内容失败的问题。...
前言:微信H5项目,ios端出现了软键盘输完隐藏后页面不会回弹,下方会有一大块留白 最近微信和ios都有版本升级,不知道是哪边升级造成的,但是经过测试,软键盘收起后,再滚动一下页面,下面的留白就会消失。所以...
iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案 兼容ios8 ios9 ios 10
在iOS开发中,WKWebView是苹果提供的一种用于展示网页内容的组件,它是UIWebView的替代品,具有更好的性能和安全性。本项目“ios-WKWebView.zip”似乎是一个示例,旨在模仿“今天头条”这款应用的网页加载和交互功能...
本教程将详细介绍如何在iOS应用中使用WKWebView,包括其基本使用方法、JavaScript与Objective-C(以下简称OC)的交互以及实现网页内容加载进度条的技巧。 首先,WKWebView的基本使用: 1. 引入库:在项目中引入...
综上所述,防止在WKWebView中打开Universal Link的方法主要涉及禁用自动处理、自定义URL决策、替换URL、重定向和JavaScript交互。选择哪种策略取决于你的具体需求和应用环境。需要注意的是,这些方法可能会影响用户...
在iOS应用开发中,UIWebView和WKWebView是两种常见的用于展示网页内容的控件。它们允许开发者在原生应用中嵌入HTML、CSS和JavaScript代码,实现丰富的交互体验。本篇文章将深入探讨如何在iOS应用中,特别是针对...
操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...
在iOS应用开发中,UIWebView和WKWebView是两种常见的用于展示网页内容的组件。它们都是UIKit框架的一部分,允许开发者在iOS应用中嵌入HTML、CSS和JavaScript内容。然而,这两个组件在性能、安全性和功能上有显著的...
在iOS开发中,WKWebView是苹果为替换旧有的UIWebView而推出的新一代网页视图控件,它在性能、稳定性以及内存管理上有着显著的提升。然而,开发者在实际使用过程中,可能会遇到WKWebView白屏的问题,这通常会给用户...
IOS WKWebView无法打开本地资源JS/CSS/Image,解决跨域问题 本人亲自编写,可以加载本地网站,如cocos creator发布的网页直接在本地打开 能够正确加载js,css/image等
iOS11 WKWebView问题汇总 WKWebView是iOS中的一种基于WebKit的浏览器控件,自iOS 8起,WKWebView...WKWebView在iOS 11中存在一些问题,但是通过使用正确的解决方法,可以解决这些问题,提高WKWebView的稳定性和性能。
### iOS WKWebView与JS交互实战技巧 #### 一、引言 随着移动互联网技术的发展,混合应用(Hybrid Apps)成为一种重要的应用开发方式。它结合了原生应用的高性能和Web应用的灵活性,其中最关键的技术之一就是浏览器...
在iOS开发中,WKWebView是苹果提供的一种用于展示网页内容的组件,它是UIWebView的替代品,具有更好的性能和安全性。本教程将深入探讨WKWebView的加载机制以及如何实现JavaScript与Objective-C/Swift的交互。 一、...
获取WKWebView的高度,注意在控制器 销毁后,为防止内存泄漏,需要将WKUserContentController *userCC = self.wkConfig.userContentController; //JS调用OC 添加处理脚本 [userCC addScriptMessageHandler:self ...
"解决iOS下无法触发focus事件的问题" 在移动端开发中, focus 事件是一个非常重要的事件,它可以帮助开发者更好地控制用户的输入行为。但是在iOS平台上,触发 focus 事件却是一个非常棘手的问题。本文将为大家分享...
通过JavaScript将这个meta标签添加到页面的head部分,确保页面在加载时就设置了正确的视口,从而解决了页面宽度不自适应的问题。 WKWebView提供的WKWebViewConfiguration对象用于配置WKWebView实例。在这个配置对象...