zoukankan      html  css  js  c++  java
  • UI细节点滴-UIScorllView和UITableView/UITextView拖动退出键盘方法

       在实际开发中,我们常常会用到UIScrollView以及它的子类控件UITableView/UITextView来进行某些操作需要唤出键盘.通常调出键盘的方式是使相应的控件成为事件的第一响应者,例如在一个视图加载完成后的ViewDidLoad方法中,调出键盘:

      - (void)viewDidAppear:(BOOL)animated

      {

          [super viewDidAppear:animated];

          [self.textView becomeFirstResponder];    // textView成为第一响应者,立即调出键盘;

      }

      在完成输入后,退出键盘的方式通常是取消第一响应者即可:

      [self.view endEditing:YES];  // 注销第一响应者,退出键盘;

      但有时候,我们需要处理在没有任何输入的时候,用户仅仅拖动了屏幕也可以退出键盘,一种常见的方式是使用UIScrollView的代理方法,监听拖动事件,一旦发生拖动则通过注销第一响应者的方式来退出键盘;

      - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

      {

          [self.view endEditing:YES];

      }

      其实IOS7.0系统中,UIScorllView中已经为我们提供了一个属性来判断是否拖动取消键盘,这样只需要通过设置这个属性的值来决定UIScorllView是否在被拖动的时候退出键盘;

      @property(nonatomic) UIScrollViewKeyboardDismissMode keyboardDismissMode 

     keyboardDismissMode 是枚举类型,它可以取三个值:

      typedef NS_ENUM(NSInteger, UIScrollViewKeyboardDismissMode) {

          UIScrollViewKeyboardDismissModeNone,          // 系统默认值  

          UIScrollViewKeyboardDismissModeOnDrag,      // 拖动取消键盘

          UIScrollViewKeyboardDismissModeInteractive,  

      } ;

     通过这个属性,我们不需要再使用代理监听的方式来退出键盘了.在UITableView和UITextView中使用更为简单,仅仅给这个属性赋值即可实现拖动屏幕退出键盘.

      self.textView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;

      注意:这个属性只能在IOS7以上的系统中使用,否则会报错!在低于IOS7的系统中,仍需要使用代理方法来监听拖动事件并注销键盘.

     

  • 相关阅读:
    Tomcat Jboss,jetty,Apache WebLogic区别与比较(阿里面试)
    zookeeper 负载均衡 核心机制-实现原理 包含ZAB协议(滴滴,阿里面试)
    六大Web负载均衡原理与实现
    LVS(Linus Virtual Server):三种IP负载均衡方式比较+另三种Web负载均衡方式
    JTable动态刷新数据
    java当中的定时器的4种使用方式
    java如何判断编码是否是utf8编码
    Java多线程-线程的同步与锁
    java中需要用equals来判断两个字符串值是否相等
    libcurl使用easy模式阻塞卡死等问题的完美解决---超时设置
  • 原文地址:https://www.cnblogs.com/caios/p/3794089.html
Copyright © 2011-2022 走看看