UITextField跟随键盘移动

利用通知监测键盘的移动,从而改变输入框的位置

-(void)dealloc

{

[[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];

}

- (void)viewDidLoad

{

[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];

}

#pragma mark - UIKeyboardNotification

- (void)keyboardWillChangeFrame:(NSNotification *)notification

{

NSDictionary *userInfo = notification.userInfo;

CGRect endFrame = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

CGRect beginFrame = [userInfo[UIKeyboardFrameBeginUserInfoKey] CGRectValue];

CGFloat duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];

UIViewAnimationCurve curve = [userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue];

void(^animations)() = ^{

[self willShowKeyboardFromFrame:beginFrame toFrame:endFrame];

};

void(^completion)(BOOL) = ^(BOOL finished){

};

[UIView animateWithDuration:duration delay:0.0f options:(curve << 16 | UIViewAnimationOptionBeginFromCurrentState) animations:animations completion:completion];

}

- (void)willShowKeyboardFromFrame:(CGRect)beginFrame toFrame:(CGRect)toFrame

{

if (beginFrame.origin.y == [[UIScreen mainScreen] bounds].size.height){//将要移动的位置

[UIView animateWithDuration:0.3 animations:^{

_atextField.frame = RECTMAKE(0, CGRectGetHeight([self superview].frame)-CGRectGetHeight(self.frame)-toFrame.size.height+10, 320, 243);

} completion:^(BOOL finished) {

}];

}else if (toFrame.origin.y == [[UIScreen mainScreen] bounds].size.height){//初始位置

[UIView animateWithDuration:0.3 animations:^{

_atextField.frame.frame = RECTMAKE(0, CGRectGetHeight([self superview].frame)-CGRectGetHeight(self.frame), 320, 243);

}completion:^(BOOL finished) {

}];

}else{//将要移动的位置

[UIView animateWithDuration:0.3 animations:^{

_atextField.frame.frame = RECTMAKE(0, CGRectGetHeight([self superview].frame)-CGRectGetHeight(self.frame)-toFrame.size.height+10, 320, 243);

} completion:^(BOOL finished) {

}];

}

}

时间: 2024-10-02 21:07:32

UITextField跟随键盘移动的相关文章

iOS UITextView 高度随文字自动增加,并跟随键盘移动(一)

项目中遇到这样一个需求 ,有个文本框,需要随着用户输入的文字多少高度自动增加. 比如说,当用户输入的文字不足一行的时候textview的高度为初始高度, 当输入的文字超过一行,不足两行的时候,我们将textView 的高度调整为显示两行文字的高度. 此处,我们要实现一个评论的功能,还需要输入框跟随键盘移动. 开始代码 首先,我们新建一个类,专门管理输入框,我们起名:CommentView 继承 UIView 为他创建一个UITextView (我们的输入框) #import <UIKit/UIK

在UITableViewController里面实现UITextField与键盘的自适应

tableview里面对textfield的键盘适应本身就是逻辑实现,利用下面代理函数将textfield的位置移到最优点. //将活跃的textview移动到tableview的中间 - (void)textFieldDidBeginEditing:(UITextField*)textField { UITableViewCell* cell = [self parentCellFor:textField]; if (cell) { NSIndexPath* indexPath = [self

【转】swift实现ios类似微信输入框跟随键盘弹出的效果

swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连接,那么这是怎么实现的呢,也许你会说直接在键盘弹出的时候把输入框也向上移动不就行了?但是我使用这种方法的时候,发现效果十分不理想,会有明显的滞后现象,原因有以下几点: 键盘弹出动画并不是匀速,键盘和输入框的时间曲线不完全一致,运动不同步 各种键盘的高度不一样(比如

关于 UITextField 和 键盘 的通知、代理调用顺序

从点击UITextField到键盘弹出完成,调用代理方法或发通知的顺序 textFieldShouldBeginEditing: (调代理) textFieldDidBeginEditing: (调代理) UITextFieldTextDidBeginEditingNotification (发通知) UIKeyboardWillChangeFrameNotification (发通知) UIKeyboardWillShowNotification (发通知) UIKeyboardDidShow

[转载]UITextField 与 键盘

键盘类型    : 1.UIKeyboardTypeDefault  默认键盘 2.UIKeyboardTypeASCIICapable   显示ASCII码值得键盘 3.UIKeyboardTypeNumbersAndPunctuation  显示数字和标点符号得键盘 4.UIKeyboardTypeURL  显示带有 .  / .com URL常用得符号得键盘 5.UIKeyboardTypeNumberPad 显示0到9得数字键盘  不支持自动大写 6.UIKeyboardTypePhon

IOS研究之多个UITextField的键盘处理

在IOS开发中使用UITextField时常需要考虑的问题就是键盘的处理.有时候,弹出的键盘会将UITextField区域覆盖,影响用户输入.这个时候就要将视图上移.这个时候我们需要考虑两点: 1,修改视图坐标的时机; 2,上移的偏移是多大. 3,UITableView设置Section间距 不明白的可以看看. 我根据自己实际操作的实现方法如下: 1,获取正在编辑的UITextField的指针 定义一个全局的UITextField的指针 UITextField *tempTextFiled; 在

iOS7_ios7_如何实现UIAlertView以及监听点击事件(其它样式)_如何修改UITextField默认键盘样式

首先我们知道,UIAlertView实际上有多种样式,在xcode中,按住cmd点击UIAlertView,进入头文件我们看到: 1 typedef NS_ENUM(NSInteger, UIAlertViewStyle) { 2 UIAlertViewStyleDefault = 0, //默认样式 3 UIAlertViewStyleSecureTextInput, //加密文本样式 4 UIAlertViewStylePlainTextInput, //普通文本样式 5 UIAlertVi

UITextField常用属性与回收UITextfield的键盘

UITextField 是UIControl的子类,UIControl又是UIView的子类,所以也是一个视图,只不过比UIView多了两个功能,1.文字显示,2.文本编辑 使用过程分四步: 1.创建对象 2.配置属性 3添加到父视图 4.释放所有权 1.创建对象 UITextField *text = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 180, 50)];    text.backgroundColor = [UICol

ios UITextField的键盘事件

使用说明:自己写的UITextField控件代码 (1)点击键盘的return健时 键盘退出 在.h文件中定义UITextField如下所示: 在.m文件 - (void)viewDidLoad 写入如下代码: textFild=[[UITextField alloc]initWithFrame:CGRectMake(20, 200,200, 20)];    textFild.layer.borderWidth=2;    textFild.layer.borderColor=[[UIColo