精华内容
下载资源
问答
  • ios 键盘收起

    2016-11-22 13:56:19
    在使用UITextField的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字...大体来说,收起键盘的方法有: 让textFiled放弃成为第一响应者(resignFirstResponder)让view或者子view强制结束编辑状态(endEd

    在使用UITextField的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字键盘,有时候要求我们弹出来的是一般的键盘。当我们输入完成的时候,就涉及到在上什么时候收回键盘的事情了。收回键盘分下面的情况来讨论。

    大体来说,收起键盘的方法有:

    • 让textFiled放弃成为第一响应者(resignFirstResponder)
    • 让view或者子view强制结束编辑状态(endEditing)

    1.输入完以后用户点击return后收起键盘。

    可以点击return收起键盘并不意味着弹出来的键盘一定都有return这个按键,比如数字键盘类型就没有,UIKeyboardTypeWebSearch类型的键盘return键就变成了Go键,需要注意的是这时候的Go键相当于return键。

    要想实现点击return让键盘收起,首先需要设置textField代理,当然还有遵循UITextFieldDelegate协议:

    _textField.delegate = self;

    然后实现协议方法- (BOOL)textFieldShouldReturn:(UITextField *)textField;,当然你也可以在这个方法里 main实现一些需求逻辑,比如判断输入的内容符不符合要求等。

    - (BOOL)textFieldShouldReturn:(UITextField *)textField{
        return [textField resignFirstResponder];
    }

    2.点击背景后收起键盘

    点击背景收起键盘可以实现view的- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法,然后执行view的- (BOOL)endEditing:(BOOL)force;方法。

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        [self.view endEditing:YES]; //实现该方法是需要注意view需要是继承UIControl而来的
    }

    还有一些比较笨的方法也可以实现达到点击背景后收起键盘的效果,比如:在背景view上面加手势,添加UIButton或者view,然后在对应的点击事件的监听方法中实现resignFirstResponder或者endEditing

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];  
    //设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。  
    tapGestureRecognizer.cancelsTouchesInView = NO;  
    //将触摸事件添加到view上
    [self.view addGestureRecognizer:tapGestureRecognizer];
    -(void)keyboardHide:(UITapGestureRecognizer*)tap{  
        [textFiled resignFirstResponder];  
    }

    3.不用view实现endEditing的方法

    如果说在比较难获取viewController的view时,可以使用下面的方法:

    [[[UIApplication sharedApplication] keyWindow] endEditing:YES];

    或者

    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil f


    文/张飞_(简书作者)
    原文链接:http://www.jianshu.com/p/532d12375e9a
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
    展开全文
  • IOS键盘收起

    2015-01-06 17:22:00
    1、点击Return按扭时收起键盘 - (BOOL)textFieldShouldReturn:(UITextField *)textField { return [textField resignFirstResponder]; } 2、点击背景View收起键盘(你的View必须是继承于UIControl) ...

    1、点击Return按扭时收起键盘

    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        return [textField resignFirstResponder];
    }

     

    2、点击背景View收起键盘(你的View必须是继承于UIControl)

    [self.view endEditing:YES];

     

    3、你可以在任何地方加上这句话,可以用来统一收起键盘

    [[[UIApplication sharedApplication] keyWindow] endEditing:YES];

    这个方法是我不久前碰到的,觉得有用,就记下来了。

     

    转载于:https://www.cnblogs.com/wcLT/p/4206575.html

    展开全文
  • ios键盘收起页面错位

    2019-12-05 09:39:38
    ios键盘收起页面错位解决方法 /** * @method screenDislocation ios手机键盘收起页面错位解决方法 * @param {string} [system] 手机系统ios或android */ function screenDislocation (system) { window._...

    ios键盘收起页面错位解决方法

    /**
     * @method  screenDislocation   ios手机键盘收起页面错位解决方法
     * @param   {string}    [system]    手机系统ios或android
     */
    function screenDislocation (system) {
        window._isScreenReset = true
        if (system === 'ios') {
            document.body.addEventListener('focusin', () => {
                //软键盘弹出的事件处理
                // 延时是为了等待focusout事件执行结束
                setTimeout(() => {
                    window._isScreenReset = false;
                }, 100);
            });
            document.body.addEventListener('focusout', () => {
                //软键盘收起的事件处理
                window._isScreenReset = true;
                setTimeout(() => {
                    //当焦点在弹出层的输入框之间切换时先不归位
                    if (window._isScreenReset) {
                        window.scroll(0, 0);//失焦后强制让页面归位
                    }
                }, 100);
            });
        }
    }
    

    JavaScript焦点事件

    blur:元素失去焦点时触发。这个事件不会冒泡;所有浏览器都支持
    focus:在元素获得焦点时触发。这个事件不会冒泡;所有浏览器都支持
    focusin:在元素获得焦点时触发,与 HTML 事件 focus 等价,但它冒泡。
    focusout:在元素失去焦点时触发。与 HTML 事件 blur 等价,冒泡
    在以上四个事件中,blur 和 focus 这两个事件的问题是它们并不冒泡,因此 IE 的 focusin 和 focusout 事件被 DOM3 级事件纳为标准方式。

    当焦点从页面的一个元素移动到另一个元素时,事件的触发顺序
    focusout 在失去焦点的元素上触发
    focusin 在获得焦点的元素上触发
    blur 在失去焦点的元素上触发
    focus 在获得焦点的元素上触发
    要确定浏览器是否支持这些事件,可以使用如下代码:
    var isSupported = document.implementation.hasFeature(“FocusEvent”, “3.0”);

    参考:
    https://blog.csdn.net/qq_23179075/article/details/86497498
    https://blog.csdn.net/TalonZhang/article/details/84298330

    展开全文
  • 本篇文章针对IOS开发时候的键盘收起问题做了详细分析和代码说明,有兴趣的朋友参考下吧。
  • 关于React Native 项目中,IOS键盘收起时留白问题 最近在项目中遇到一个bug,在iphone上输入内容后,点击键盘上的完成,收起IOS键盘时,再点击提交按钮时点击事件不触发。 我仔细排查了一遍代码,没有发现问题,说明...

    关于React Native 项目中,IOS键盘收起时留白问题

    最近在项目中遇到一个bug,在iphone上输入内容后,点击键盘上的完成,收起IOS键盘时,再点击提交按钮时点击事件不触发。

    我仔细排查了一遍代码,没有发现问题,说明是其他因素造成的。经过一番bug复现,
    后来在iphone6 plus上定位了问题所在。 原来是IOS键盘弹出时,会把页面顶上去,使一部分空白空间遮挡住了提交按钮所导致的。并且点击IOS键盘上的完成或者屏幕使TextINput失去焦点时,被顶起的页面不会马上还原,直到你再次点击屏幕时,页面才会恢复,这时点击按钮才能触发事件。

    问题找到了,那么接下来说说是怎么解决的,我是在TextInput 的 onBlur事件里,控制页面滑动,手动让被顶起的页面还原。

    上代码:

    	onBlur = () =>{
        	this.container.current.scrollIntoView({ behavior: "smooth" });
    	}
    

    这里使用scrollIntoView来使一个元素滑动到页面可视区域内

    我看有的攻略上面使用document.documentElement.scrollTop=0,但是这个方法处理不了当前问题。

    查看文档可知Element.scrollTop 属性可以获取或设置一个元素的内容垂直滚动的像素数。,意思是设置Element.scrollTop=0的话,也只会影像元素的滚动像素,也就是让滚动条滑到最顶,这样做乍一看似乎可以解决问题,但是当页面内容不足一屏高从而没有滚动条时,这个方法就没有办法达到预期的效果了,不要忘记我们的目标是当TextInput失去焦点时,手动滑动一下页面。

    完整代码:

    import React,{PureComponent} from 'react';
    import {TextInput,View} form 'react-native';
    
    export default  class App extends PureComponent {
    
      	container = React.createRef();
      
    	onBlur = () =>{
        	this.container.current.scrollIntoView({ behavior: "smooth" });
    	}
    	
    	render(){
    	  const {children} = this.porps;
    	  return (
    	  	<View ref={this.container}>
    	      <TextInput onBlur={this.onBlur} />
    	  	</View>
    	  );
    	}
    }
    
    

    这里this.container使用的ref,也可以获取DOM节点,像这样:

        const div = document.querySelector('div');
        form.scrollIntoView(true);
    

    我个人觉得document.querySelector也挺好用的,不了解的同学可以看这里

    完。

    展开全文
  • 解决H5页面 ios键盘收起后弹出层焦点错位问题 用 H5 写app页面的时候 IOS 上出现如下问题:(Android 中不存在) 布局如上图:背后是可滚动的列表,前面是弹出框。当打开键盘后,弹出框跟后面的列表都会被顶上去一...
  • 今天在开发一个移动端的 H5 页面时,遇到了 IOS键盘收起时界面无法归位的问题。下面详细描述下问题和症状: 页面结构 出问题的页面是一个表单结构。即类似于一个 div 下有4个 input 表单的结构,用于用户填写邮寄...
  • ios键盘收起页面空白问题

    千次阅读 2019-04-03 15:39:18
    开发网页的时候遇到一个非常恶心的问题,ios中,一个页面有一系列input需要填写,假设有10个,点击后面几个,弹出键盘,一般会超出页面长度的。这个时候,如果收起键盘,页面不会回弹导致底部出现空白部分,这个时候...
  • iOS 键盘收起

    2015-07-02 11:02:17
    eld/textView收起键盘的方法有很多,但总的来说就是释放第一响应者和结束编辑即可 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1.最简单粗暴的,只要在 任何
  • tips: 这个问题网上我还没有搜到解决方案,,,都是些只会复制别人文章还重复还不写来源的人,,不想看啰嗦文章的话解决方案就在第二个板块,直接用就行。 问题描述 可以参考上图,很影响体验 ...
  • 出现场景:IOS端,在弹出层点击input时调起键盘页面会被顶上去document.body.scrollOffset大于0,收起键盘时scrollOffset不变,造成焦点错位。 注:安卓手机点击时调起键盘不会把页面顶上去,会改变窗口高度变化,...
  • iOS 键盘收起异常的解决办法

    千次阅读 2017-05-18 09:38:20
    如果使用 touchesBegan 来收起键盘,能响应touchesBegan的方法,但是不能收起键盘,这个是因为该线程不在主线程中,应该把键盘收起的动作放在主线程中进行。dispatch_async(dispatch_get_main_queue(), ^{ [self....
  • 最近在做移动端兼容时,发现ios系统在输入内容时,页面被挤上去了,但输入完成后,键盘回弹了,页面没有回弹,还是停留在刚才输入时的位置。 解决办法 mounted(){ document.body.addEventListener('focusout',()=&...
  • // 微信端ios移动端 软键盘收起后,页面内容不回弹 $('input').on('blur',function(){ window.scrollTo(3000,7000); }); 语法: 1、scrollTo:实现平滑滚动到页面指定位置。 2、window.scrollTo(当前位置,指定...
  • 3.可以直接在ViewController中直接重写touchesBegan函数,实现触摸视图空白处,关闭键盘,代码如下: //触摸屏幕空白处 关闭键盘 -(void)touchesBegan:(NSSet*> *)touches withEvent:(UIEvent *)event{ [self....
  • IOS键盘收起后,页面底部留白处理

    千次阅读 2019-05-08 19:05:00
    问题:键盘收回后页面底部留白,导致dialog组件按钮位移,视觉上,其中的按钮无法正常工作 解决方案:监听失去焦点时,让页面滚动到顶部  HTML:添加失去焦点事件钩子  <input class="input" placeholder=...
  • document.body.addEventListener("focusout"... //软键盘收起的事件处理 setTimeout(() =&gt; { const scrollHeight = document.documentElement.scrollTop || document.body.scrollT...
  • 前言 网上找的例子 千篇一律~~~~~ 代码 <template> <div>...div @focusout="inputBlur" @focusin="inputFocus">...input type="tel" placeholder="请输入手机号" />...input type="number" p...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 640
精华内容 256
关键字:

ios键盘收起