zoukankan      html  css  js  c++  java
  • iOS开发点滴

    有时候系统显示的键盘会挡住视图中某些重要的控件,这个时候当用户按下换行键,就应该取消UITextField对象的第一响应(First Responder)状态而关闭键盘。

    1. 首先,视图控制器必须遵守UITextFieldDelegate协议

    @interface XXViewController ()<UITextFieldDelegate>

    2. 然后,需要再视图控制器中实现textFieldShouldReturn:

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

    3. 运行应用,点击键盘,按下Return键后发觉没有反应,这是怎么回事呢?

    原来,我们忘记了让我们的文本框控件连接File's Owner

    点击文本框,按下Control键+鼠标拖动到左侧Placeholders中的File's Owner,这时候鼠标右键点击文本框,会发现Delegate中多了File's Owner

    再次运行,Ok成功了!

    4. 为了获得更好的用户体验,需要用户轻按视图背景区域,也能关闭键盘

    解决方案是想顶层视图发送endEditing:消息

    a. 将视图控制器中的视图的Custom Class从UIView改为UIControl

    b. 添加背景轻触响应事件

      b-1) 切换到辅助视图(Assistant View), 左侧是视图控制器的图形化界面,右侧是实现代码

      b-2) 选中视图控制区的顶层View, Control+鼠标左键拖动到实现代码

      b-3) 在弹出对话框中输入动作名称backgroundTapped

             千万不要忘记把事件类型改为Touch Up Inside!!

             输入以下代码:

    - (IBAction)backgroundTapped:(id)sender
    {
        [self.view endEditing:YES];
    }

    运行应用,Ok一些成功!!

  • 相关阅读:
    Redis缓存穿透和雪崩
    Redis主从复制
    Redis发布订阅
    IO多路复用
    Synchronized解读
    日志导致jvm内存溢出相关问题
    tomcat及springboot实现Filter、Servlet、Listener
    MySQL主从复制针对trigger的特殊处理
    二、变量/常量/数据类型
    Ubuntu21.04 / Linux Mint20.2 安装 TradingView分析软件
  • 原文地址:https://www.cnblogs.com/davidgu/p/5366741.html
Copyright © 2011-2022 走看看