移动端中 H5输入框在弹起键盘后被遮挡

html-css013

移动端中 H5输入框在弹起键盘后被遮挡,第1张

可见,键盘遮盖住了这个输入框,而且此时不能滚动,而按钮的设计为始终置底

置底的按钮为fixed布局,观察得知,这样当键盘弹起时,其实页面的高度被缩短成类似于这样

这样,始终置底的元素会遮盖住输入框,并且由于界面并没有长到可以滚动的地步,输入框非常正常地被遮住了

【解决办法】

首先,把置底元素设置成,在页面的底部而非屏幕的底部

然后,设置页面的高度,让按钮有置底的效果

注意有 最小高度 ,因为当键盘弹起时,100vh是缩小的那部分的高度,而不是屏幕高度

*如果有大屏的需求,适配一下就好

这样,当键盘弹起时,内容就是可以滚动的了,出于用户体验的需求,可以在focus输入框的时候,把滚动条划一下,露出输入框

具体的数值可以再调整

设置content为 overflow: auto

让content的高度为 100vh-buttonHeight

使用第二种的html

利用window.resize方法,这个方法的特性是:当调整浏览器窗口的大小时,发生 resize 事件。

screenHeightNoChange==true的时候使用方法三,当==false的时候,将button变成position:relative 就能解决问题了

以上,就是解决问题的方法了

键盘挡住了输入框,能不能把输入框顶到键盘之上.可以让它显示出来

首先需要在代理方法 - (void)textViewDidBeginEditing:(UITextView *)textView 中来处理。 这时需要你移动整个view的frame上移,而不是移动当前的文本框的位置。 为了移动效果的流畅,最好把修改frame的动作放到动画里来做 CGRect curFrame=self...

--------------------

IOS中输入框被软键盘遮挡的解决办法

标签: iosuiviewkeyboardfile

做iOS开发时,难免会遇到输入框被键盘遮掩的问题。上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了。

有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollView )中,然后滚动视图实现输入框不被软键盘覆盖,个人觉得此方案好是好,但是太过麻烦。

有的解决方案是通过一个通知 UIKeyboardDidShowNotification 去实现的,需要用到事件监听,而且需要自己定义并实现“将要开始编辑”与“结束编辑”这两个监听事件中的方法。本人也觉得很麻烦。

参考了很多方法,都不是太理想。自己研究了一下,既然软键盘(Keyboard)出现与否是跟输入框(UITextField)紧密关联的。所以自己找到一个解决方案,没有上述两种方案那么麻烦,只需实现代理UITextFieldDelegate中的三个方法即可。

实现方法:

1)将输入框的代理设置为self

(在lb文件中将输入框的delegate设置为File’s Owner 。或者使用代码textField.delegate = self

2)将输入框所对应的ViewController.h设置实现了UITextFieldDelegate协议

在ViewController.m文件中实现UITextFieldDelegate的三个方法即可:

[cpp] view plain copy

//开始编辑输入框的时候,软键盘出现,执行此事件

-(void)textFieldDidBeginEditing:(UITextField *)textField

{

CGRect frame = textField.frame

int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0)//键盘高度216

NSTimeInterval animationDuration = 0.30f

[UIView beginAnimations:@"ResizeForKeyboard" context:nil]

[UIView setAnimationDuration:animationDuration]

//将视图的Y坐标向上移动offset个单位,以使下面腾出地方用于软键盘的显示

if(offset >0)

self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height)

[UIView commitAnimations]

}

//当用户按下return键或者按回车键,keyboard消失

-(BOOL)textFieldShouldReturn:(UITextField *)textField

{

[textField resignFirstResponder]

return YES

}

//输入框编辑完成以后,将视图恢复到原始状态

-(void)textFieldDidEndEditing:(UITextField *)textField

{

self.view.frame =CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)

}

方法很简单吧?请注意一定不要忘记设置输入框的代理delegate哦

------------------------------

HTML5 虚拟键盘出现挡住输入框的解决办法

下面我们来看一篇关于HTML5 虚拟键盘出现挡住输入框的解决办法,希望这篇文章能够帮助到各位朋友,有兴趣的同学可以进来看看吧.

1,问题描述

我们使用 H5 做移动 App,或者进行移动网站开发时。如果文本输入框在整个页面的下方,当我们点击输入框要输入文字时,系统弹出的虚拟键盘就会将输入框给挡住。(这个只有在Android 系统下会有这个问题,iOS 系统会自动将整个页面上移动。)

2,解决办法

我们可以借助元素的 scrollIntoViewIfNeeded() 方法。这个方法执行后如果当前元素在视口中不可见,则会滚动浏览器窗口或容器元素,最终让它可见。如果当前元素在视口中已经是可见的,这个方法什么也不做。

3,样例代码

这里使用了 jQuery 绑定了所有输入框(textinput、textarea)的点击事件,这样当输入框被点击后就调用它的 scrollIntoViewIfNeeded() 方法,保证输入框可见。(延迟400毫秒出现时有些 Android 手机键盘出现的比较慢)

//防止键盘把当前输入框给挡住

$$('input[type="text"],textarea').on('click', function () {

var target = this

setTimeout(function(){

target.scrollIntoViewIfNeeded()

console.log('scrollIntoViewIfNeeded')

},400)

})