键盘的升起和隐藏

VS Code配置MinGW64编译非线性优化库NLopt VS Code用MinGW64编译C++代码安装MSYS2软件并配置非线性优化库NLopt和测试引用库代码的完整具体步骤。:若使用非UCRT版本(如传统MinGW64),替换所有路径中的。库文件会自动安装到MSYS2的。 阅读详情

例如,有一个填写姓名的输入框,当点击姓名下方的输入框时,键盘弹出,界面上移;当点击提交的时候,键盘回收,界面下移;

XZSignUpView.h中

@interface XZSignUpView : UIView

// 点击提交按钮

@property (nonatomic,copy)void(^blockSubmitBtn)(NSString *,NSString *);

@property (nonatomic,copy)void(^blockCloseBtn)(UIButton *);

@end


XZSignUpView.m中

#import “XZSignUpView.h”


@interface XZSignUpView()

/** 姓名输入框 */

@property (nonatomic,strong)UITextField *textName;

/** 背景图 */

@property (nonatomic,strong)UIView *viewBackGround;

/** 手机号输入框 */

@property (nonatomic,strong)UITextField *textPhoneNumber;

/** 提交按钮 */

@property (nonatomic,strong)UIButton *btnSubmit;

@end


@implementation XZSignUpView

- (instancetype)initWithFrame:(CGRect)frame{

    if (self = [superinitWithFrame:frame]) {

        [selfsetUpSignUpView];

       //添加监听,当键盘出现时收到消息

        [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];

       //添加监听,当键盘退出时收到消息

        [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWillHide:)name:UIKeyboardWillHideNotificationobject:nil];

    }

    return self;

}


// 当键盘出现或改变时调用

- (void)keyboardWillShow:(NSNotification *)aNotification

{

    // 获取键盘的高度

    NSDictionary *userInfo = [aNotification userInfo];

    NSValue *aValue = [userInfoobjectForKey:UIKeyboardFrameEndUserInfoKey];

    CGRect keyboardRect = [aValue CGRectValue];

    int height = keyboardRect.size.height;

    if (self.textName.text.length ==0) {//键盘弹出

        self.viewBackGround.frame = CGRectMake(0,KProjectScreenHeight-height-300,KProjectScreenWidth,300);

    }else{

        CGRect rect =CGRectMake(0,KProjectScreenHeight -self.viewBackGround.frame.size.height-height,KProjectScreenWidth,self.viewBackGround.frame.size.height);

        self.viewBackGround.frame = rect;

    }

}


// 当键退出时调用

- (void)keyboardWillHide:(NSNotification *)aNotification

{

    if (self.textName.text.length ==0) {

        self.viewBackGround.frame = CGRectMake(0,KProjectScreenHeight-300,KProjectScreenWidth,300);

    }else{

        CGRect rect =CGRectMake(0,KProjectScreenHeight -self.viewBackGround.frame.size.height,KProjectScreenWidth,self.viewBackGround.frame.size.height);

        self.viewBackGround.frame = rect;

    }

}


- (void)setUpSignUpView {

    /** 背景图 */

    UIView *viewBackGround = [[UIViewalloc]init];

    [self addSubview:viewBackGround];

    [viewBackGround mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(self.mas_left);

        make.right.equalTo(self.mas_right);

        make.bottom.equalTo(self.mas_bottom);

        make.height.equalTo(@300);

    }];

    self.viewBackGround = viewBackGround;

    viewBackGround.backgroundColor = [UIColorwhiteColor];

    

    /** 关闭按钮 */

    UIButton *btnClose = [UIButtonbuttonWithType:UIButtonTypeSystem];

    [viewBackGround addSubview:btnClose];

    [btnClose mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(viewBackGround.mas_top).offset(20);

        make.right.equalTo(viewBackGround.mas_right).offset(-20);

        make.height.and.width.equalTo(@18);

    }];

    [btnClose addTarget:selfaction:@selector(didClickCloseButton:)forControlEvents:UIControlEventTouchUpInside];

    [btnClose setBackgroundImage:[UIImageimageNamed:@”签到关闭icon_03”]forState:UIControlStateNormal];

    

    /** 姓名 */

    UILabel *labelName = [[UILabelalloc]init];

    [viewBackGround addSubview:labelName];

    [labelName mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(self.mas_left).offset(20);

        make.top.equalTo(btnClose.mas_bottom).offset(10);

    }];

    labelName.text = @”姓名”;

    

    /** 姓名输入框 */

    UITextField *textName = [[UITextFieldalloc]init];

    [viewBackGround addSubview:textName];

    [textName mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(labelName.mas_left);

        make.top.equalTo(labelName.mas_bottom).offset(5);

        make.right.equalTo(btnClose.mas_right);

        make.height.equalTo(@45);

    }];

    self.textName = textName;

    textName.borderStyle =UITextBorderStyleRoundedRect;

    

    /** 手机号 */

    UILabel *labelPhoneNumber = [[UILabelalloc]init];

    [viewBackGround addSubview:labelPhoneNumber];

    [labelPhoneNumber mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(labelName.mas_left);

        make.top.equalTo(textName.mas_bottom).offset(20);

    }];

    labelPhoneNumber.text = @”手机号”;

    

    /** 手机号输入框 */

    UITextField *textPhoneNumber = [[UITextFieldalloc]init];

    [viewBackGround addSubview:textPhoneNumber];

    [textPhoneNumber mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(labelName.mas_left);

        make.top.equalTo(labelPhoneNumber.mas_bottom).offset(5);

        make.right.equalTo(btnClose.mas_right);

        make.height.equalTo(textName.mas_height);

    }];

    self.textPhoneNumber = textPhoneNumber;

    textPhoneNumber.borderStyle =UITextBorderStyleRoundedRect;

    

    /** 提交按钮 */

    UIButton *btnSubmit = [UIButtonbuttonWithType:UIButtonTypeCustom];

    [viewBackGround addSubview:btnSubmit];

    [btnSubmit mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(textPhoneNumber.mas_left);

        make.bottom.equalTo(self.mas_bottom).offset(-15);

        make.right.equalTo(textPhoneNumber.mas_right);

        make.height.equalTo(textName.mas_height);

    }];

    self.btnSubmit = btnSubmit;

    [btnSubmit addTarget:selfaction:@selector(didClickSubmitButton:)forControlEvents:UIControlEventTouchUpInside];

    [btnSubmit.titleLabelsetFont:[UIFontsystemFontOfSize:17weight:2]];

    [btnSubmit setBackgroundColor:XZColor(14,93,210)];

    btnSubmit.layer.masksToBounds =YES;

    btnSubmit.layer.cornerRadius =5.0f;

    // 

}


// 点击关闭按钮

- (void)didClickCloseButton:(UIButton *)button {

    [selfremoveFromSuperview];

    if (self.blockCloseBtn) {

        self.blockCloseBtn(button);

    }

}


// 点击提交按钮

- (void)didClickSubmitButton:(UIButton *)button {

    [selfendEditing:YES];

    if (self.blockSubmitBtn) {

        self.blockSubmitBtn(self.textName.text,self.textPhoneNumber.text);

    }

    NSLog(@”%@,%@”,self.textName.text,self.textPhoneNumber.text);

    // 发送成功之后清空

//    self.textName.text = nil;

//    self.textPhoneNumber.text = nil;

    self.viewBackGround.frame = CGRectMake(0,KProjectScreenHeight-300,KProjectScreenWidth,300);

   

}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [selfendEditing:YES];

}


@end



// XZSignUpView的使用

- (XZSignUpView *)signUpView {

    if (!_signUpView) {

        _signUpView = [[XZSignUpViewalloc]initWithFrame:[UIScreenmainScreen].bounds];

        __weak __typeof(&*self)weakSelf =self;

        _signUpView.btnTitle =@”提交”;

        _signUpView.blockCloseBtn = ^(UIButton *button) {

            [weakSelf.viewBackGround removeFromSuperview];

        };

    }

    return_signUpView;

}


UIWindow *keyWindow = [UIApplicationsharedApplication].keyWindow;

    UIView *viewBackGround = [[UIViewalloc]initWithFrame:keyWindow.frame];

    viewBackGround.backgroundColor = [UIColorblackColor];

    viewBackGround.alpha = 0.6;

[keyWindow addSubview:self.signUpView];




C2000 CLA协处理器:嵌入式实时控制性能优化与实战指南 在嵌入式实时控制系统中,主CPU常因高频率、低延迟的控制算法而面临性能瓶颈。为解决此问题,协处理器技术应运而生,它通过硬件并行架构分担计算密集型任务,从而提升系统整体性能。其核心原理在于独立的计算单元与总线设计,能够实现近乎零延迟的响应,这对于电机驱动、数字电源等闭环控制场景具有极高的技术价值。本文聚焦于德州仪器C2000系列微控制器中的控制律加速器(CLA),深入解析其作为独立浮点协处理器如何通过任务调度与消息RAM通信机制,有效实现性能倍增,并提供了从内存配置到代码调试的完整工程实践方案。 阅读详情

相关推荐

从零构建Elasticsearch MCP代理:自然语言查询背后的技术揭秘

本文深入解析如何从零构建Elasticsearch MCP代理,实现自然语言查询的技术架构与实战应用。通过MCP协议与Elasticsearch的结合,系统能够将自然语言转换为精确的DSL查询,提升非技术用户的数据查询效率。文章详细介绍了核心架构、DSL生成引擎、端到端系统搭建及生产环境最佳实践,为开发者提供全面的技术指南。

lll78的博客 877

XZ_iOS中textField的键盘弹出和回收导致的界面上移和下移

当点击输入框时,键盘弹出,界面上移;当点击提交的时候,键盘回收,界面下移

understand_XZ的博客 2110

51单片机———UART串口通信

传统理解就是信息的传输与交换。单片机与单片机之间,单片机与电脑之间,以及单片机与各式各样的模块之间都可以进行通信。如果没有通信,那么单片机的功能仅仅局限于它本身,它没办法从其他设备获取有用信息,也无法将自己产生的信息告诉其他设备,这样子单片机与外围器件的合作就会收到限制,没办法完成更多的功能,就像一个没办法拓展业务的公司。:实现我们程序当中写的P0=0xFC,就是一次同时对8位进行信号的输出;习惯上,我们还称P0、P1、P2、P3为单片机的4组并行总线:实现低位先发 高位在后。

m0_74225397的博客 3295

iOS 返回上一页,内容下移问题

上图 问题描述:今天突然发现页面点击返回时候,整体内容下移,准确的说是:返回过程中,页面会出现整体往右下角移动,而不是直接向右移动 出现原因:我这边的原因,是因为点击了输入框,然后返回的时候,键盘退下导致整体页面下移! - (void)actionBack { [self.view endEditing:YES]; [super actionBack]; } 索性我就在返回方法前,添加了默认退出键盘方法解决 总结:此处是因为返回过程中,有一个下移动画和返回动画一起所导致的 后记:上诉只

优快云博客 705

基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践

本文详细介绍了基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践。通过环境配置、PX4仿真环境搭建、自定义消息生成、Simulink通信实现及实时优化等步骤,提供了完整的无人机位置控制案例,帮助开发者实现高精度的实时联合仿真。

red88的博客 203

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

iOS开发 textField被键盘遮住的时候自动上移

一.创建工程项目和视图控制器       1、创建一个empty(空的)工程项目,新建一个UIViewController;       2、选中工程,右键-New File…选择“Cocoa Touch Class”-Next,给个合理的名称ViewController,再Next完成;       3、在AppDelegate.m文件包含#import "ViewContro

mrSunHR的博客 4721

2.1 SRv6 TE Policy

SRv6 TE Policy是在SRv6技术基础上发展的一种新的隧道引流技术。SRv6 TE Policy路径表示为指定路径的段列表(Segment List),称为SID列表(Segment ID List)。每个SID列表是从源到目的地的端到端路径,并指示网络中的设备遵循指定的路径,而不是遵循IGP计算的最短路径。如果数据包被导入SRv6 TE Policy中,SID列表由头端添加到数据包上,网络的其余设备执行SID列表中嵌入的指令。

m0_70976024的博客 1237

iOS UITextField编辑时文本偏移问题?

错误原因: 在cell中添加UITextField,在编辑的时候总是出现文本偏移问题,编辑结束时却恢复正常。 解决办法: 代码中设置其部分属性,加上这句话 //self.textFidle.clipsToBounds = YES;,文本就会偏移,去掉就没问题 self.textFidle.textAlignment = NSTextAlignmentLeft;

桥边风满袖的博客 623

构建OneService:打造高效、安全、灵活的企业级数据服务平台

数据服务(OneService)作为统一的数据服务出口,实现了数据的统一市场化管理,有效地降低数据开放门槛的同时,保障了数据开放的安全。

数据与算法架构提升之路专栏 2106

微信小程序启用蓝牙设备特征值变化时的notify功能

注意:这里的serviceUUID、notifyCharacteristicUUID 我会在后面写入数据时做重点说明。isNotifyBLECharacteristic:false, //是否启用蓝牙设备服务特征 notify。二、启用蓝牙设备特征值变化时的notify功能。下一篇 将继续介绍 微信小程序蓝牙设备写入数据。

wsk198726的专栏 1172

iOS TextField 弹出键盘时实现view整体上移下移:防止弹出键盘遮挡输入框

TextField点击输入时,弹出键盘会遮挡TextField本身,所以也就遮挡了输入框。网上有把TextField控件向上移动的(看这里),但这不适合我的项目,网上找到将整个View向上移的方案,真是我想要的。 首先创建一个textFiled 并实现其代理方法。 - (void)textFieldDidBeginEditing:(UITextField *)textField

doubleface999的博客 3153

Allegro如何去掉PCB内层未使用的过孔孔环?

在用Allegro进行PCB设计过程中,遇到铺铜铜箔被焊盘大量割断,导致铺铜不完整,这样就会导致铺铜过电流太小,影响板的性能,严重的会导致板工作不稳定,甚至不工作。解决办法:是去掉内层未使用的过孔孔环,增大过铜箔面积。

bhxc809751502的博客 2571

怎样在一个控件获得焦点时打开软键盘?(转)

比如一个EditBox获得焦点后,这个时候自动打开软键盘,这样可以方便用户输入——SIPINFO、SHSIPINFO、SIPSETINFO、SIPGETINFO里面有些参数弄不明白//隐藏输入面板BOOL LowerSip(){BOOL fRes = FALSE;SIPINFO si;memset( &si, 0, sizeof( si ) );si.cbSize = sizeof( si );i

aikker的专栏 1438

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java 调用软键盘_打开软键盘

WIN32的话话,要是这几个函数SIPINFO、SHSIPINFO、SIPSETINFO、SIPGETINFO.NET底下有个INPUTPANEL设置他的ENABLE就OK了。//隐藏输入面板BOOL LowerSip(){BOOL fRes = FALSE;SIPINFO si;memset( &si, 0, sizeof( si ) );si.cbSize = sizeof( si )...

weixin_27130513的博客 647

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

js 弹框 底层穿透问题

点击 发送邮箱按钮 出现弹框 使用fixed定位,当输入邮箱,软键盘被拉起,输入完毕,键盘收起,ios机型会导致键盘弹起的时候 底层页面的高度向上推 键盘收起 高度没有回来 导致点击探层的确定按钮 元素错位。 解决方法 键盘收起时 底层高度回到顶部 在这里插入图片描述 ...

etemal_bright的博客 942

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

iOS键盘升起和消失通知

1 、添加通知和对应方法 如下 - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyb...

哈皮吖的博客 486

键盘升起避免遮挡布局

本文介绍了在任意布局中键盘升起避免某按钮或某任意控件被遮挡的方法,主要用到了addOnGlobalLayoutListener方法。 使用下面的controlKeyboardLayout()方法不但可以避免控件被遮挡也可以用来判断键盘升起事件——只要rootInvisibleHeight >100即可视为键盘升起,只要在后面添加自己的相应处理就行。话不多说直接上源码:1. MainActivity

张平的专栏 659

iOS监听键盘上升和降落

很多时候,我们用到输入框都需要监听键盘上升和下降,以便让用户可以看到自己输入的文字。 实现方法很简单,代码如下:     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification

顺情风的博客 1589

flutter 隐藏键盘

【代码】flutter 隐藏键盘。

小漠007的专栏 972

安卓和ios 软键盘弹起和收起

1 目前来说,js 应该是没有直接获取手机键盘状态的api,但是可以通过一些其他的特点来判断当前的键盘弹起和收起 2 安卓键盘弹起会触发页面的resize 事件(苹果不会),所以可以通过判断页面高度的前后变化来判断键盘的状态。 3 ios 在键盘收起的时候input 会失去焦点(安卓不会),所以可以通过input 的focus 和 blur 事件来判断键盘的状态 或者通过页面的foucein 和 focusout 来判断键盘的状态(有时候键盘收起并不会触发focusout 事件,需要滚动一点点之后.

yuange 1735

如何在WINCE开启和关闭软键盘

<br />比如一个EditBox获得焦点后,这个时候自动打开软键盘,这样可以方便用户输入——SIPINFO、SHSIPINFO、SIPSETINFO、SIPGETINFO里面有些参数弄不明白<br />//隐藏输入面板<br />BOOL LowerSip()<br />{<br />BOOL fRes = FALSE;<br />SIPINFO si;<br />memset( &si, 0, sizeof( si ) );<br />si.cbSize = sizeof( si );<br />if(

zmq5411的专栏 2388

IOS 键盘弹出 布局变化

#pragma mark - 键盘通知 - (void)addNoticeForKeyboard { //注册键盘出现的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification objec...

m_miao 1056

解决uni-app弹出键盘导致页面的底部被挤压,导致变形

官方的aip用了,但是好像没有效果(不知道是不是我的问题,可能是我的页面底部是组件的原因) 索性就另辟蹊径, 我的思路是监听屏幕高度来控制 data(){ return{ // 获取频幕高度 documentHeight: document.documentElement.clientHeight, } } mounted(){ window.onresize = () => { return (() => {

qq_44766377的博客 1667

安卓简单技术-editview阻止软键盘自动升起

在AndroidManifest.xml里面  选择那个acitivity 把他的window soft input mode设置成 stateHidden和 adjustUnspecified

LzLcheer的博客 464

处理键盘消失和遮挡的问题

// // ViewController.m // Common_Code_Login // // Created by 麦子 on 15/8/16. // Copyright (c) 2015年 麦子. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @imp

麦子专栏 592
上一篇: iOS如何往当前工程再添加一个工程
下一篇: iOS手机号码的正确输入
华丽的跌倒
博客等级 码龄10年 17粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值