iOS 多个输入框弹出键盘处理

server/2024/12/27 0:35:21/

开发中遇到这样一个场景,有多个输入框
而不同的输入框,需要页面向上偏移的距离不一样
这个时候,需要我们在获取到键盘弹出通知的时候,需要
知道我们开始进行编辑的是哪一个输入框,这个时候
需要我们知道一个技术点,就是
**textField的开始编辑的响应方法textFieldDidBeginEditing是比键盘弹出的通知要早的,**根据这个特性,我们就可以在开始编辑的时候,记录一个是哪一个输入框开始了,根据他的位置,设置相应的偏移量

#代码

设置代理

    _nameTextField.delegate = self;

实现代理方法

- (void)textFieldDidBeginEditing:(UITextField *)textField {if ([self.delegate respondsToSelector:@selector(didBeginEditing:)]) {[self.delegate didBeginEditingInView:self];}
}

实现方法

- (void)didBeginEditingInView:(AuthenticationVAccountView *)authenticationAccountView {self.editAccountView = authenticationAccountView;NSLog(@" didBeginEditingInAuthenticationAccountView");
}

键盘通知

- (void)keyboardWillShow:(NSNotification *)noti
{AuthenticationVAccountView *userInforView = self.editAccountView;CGRect userInfoViewframe = [self.scrollView convertRect:userInforView.frame toView:DTContextGet().window];CGFloat bottomSpace = UIGetScreenHeight()  - CGRectGetMaxY(userInfoViewframe);//设置一个bufferbottomSpace -= 40;CGRect keyboardRect = [noti.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];CGFloat boardHeight = keyboardRect.size.height;if ((boardHeight - bottomSpace) < 0) {return;}CGFloat duration = [noti.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue];Weakify(self);[UIView animateWithDuration:duration animations:^{Strongify(self);self.scrollView.y -= (boardHeight - bottomSpace);self.backgroundView.y -= (boardHeight - bottomSpace);}];
}

http://www.ppmy.cn/server/153464.html

相关文章

5G -- 空口关键技术

前言&#xff1a; 手机(UE)和5G基站(gNodeB)之间的空中接口 新技术的特点&#xff1a; 1、提升速率&#xff1a;大带宽、新编码、高阶调制、F-OFDM、M-MIMO 2、降低时延&#xff1a;灵活帧结构、自包含时隙、免授权调度、D2D 3、提升覆盖&#xff1a;上下行解耦、EN-DC(双连…

【微信小程序】3|首页搜索框 | 我的咖啡店-综合实训

首页-搜索框-跳转 引言 在微信小程序中&#xff0c;首页的搜索框是用户交互的重要入口。本文将通过“我的咖啡店”小程序的首页搜索框实现&#xff0c;详细介绍如何在微信小程序中创建和处理搜索框的交互。 1. 搜索函数实现 onClickInput函数在用户点击搜索框时触发&#x…

【笔记】下载mysql5.7

MySQL5.7安装超详细步骤(保姆级教程)_mysql5.7下载安装-CSDN博客 下载与安装 初次登录以及改密码 MySQL 5.7 安装教程&#xff08;全步骤图解教程&#xff09;_mysql5.7的安装教程-CSDN博客

AWS IAM Roles Anywhere 使用 OpenSSL 自签 CA 过程

背景介绍 相比于传统使用 AK/SK 在第三方应用中访问 AWS 资源的认证方式, IAM Roles Anywhere 使用证书认证的方式为应用生成临时的身份凭证, 可以有效避免 AK/SK 意外泄漏造成的安全隐患. AWS IAM Roles Anywhere 官方介绍 工作流程示意 主要涉及到的几个概念 Private CA:…

Docker 镜像加速访问方案

在数字化时代&#xff0c;Docker以其轻量级和便捷性成为开发者和运维人员的首选容器技术。然而自2023年5月中旬起&#xff0c;Docker Hub 的访问速度较慢或不稳定&#xff0c;这对依赖Docker Hub拉取镜像的用户来说无疑是一个挑战。本文将提供 Docker Hub 访问的一系列替代方案…

Mimicking-Bench:首个通过模仿大规模人类动作数据学习通用人形机器人场景交互技能的综合基准(具有 11K 对象形状和 23K 人机交互动作)

2024-12-24&#xff0c;由清华大学、Galbot、上海启智研究所和上海人工智能实验室联合创建了Mimicking-Bench数据集&#xff0c;这个数据集首次为通过模仿人类动作学习通用人形机器人场景交互技能提供了大规模的参考&#xff0c;对于机器人学和现实世界应用具有重要意义。 一、…

【ORB-SLAM3:相机针孔模型和相机K8模型】

在ORB-SLAM3中&#xff0c;相机的建模是 SLAM 系统的核心之一&#xff0c;因为它直接影响到如何处理和利用图像数据进行定位和地图构建。ORB-SLAM3 支持不同的相机模型&#xff0c;其中包括针孔模型和鱼眼模型&#xff08;K8 模型&#xff09;。下面分别介绍这两种模型。 相机…

STM32F407 | Embedded IDE02 - 调试、断点、观察全局变量(支持JLINK、STLINK、DAPLINK)

导言 继续使用安富莱的开发板。 在vscode上实现程序的调试、打断点、观察全局变量确实要折腾一番。有一些开发者跳过了这个功能&#xff0c;使用串口打印log来调试程序。但是&#xff0c;我认为打断点&#xff0c;观察全局变量还是很有效的调试手段&#xff0c;不能放弃。所以&…