iOS Dev (61) 文本输入框随键盘上移,类似信息、Whatsapp、微信中的聊天输入框
2014-06-24 03:39
666 查看
iOS Dev (61) 文本输入框随键盘上移,类似信息、Whatsapp、微信中的聊天输入框
作者:阿锐 地址:http://blog.csdn.net/prevention-
在 UITextView 所在的类的 interface 声明中添加 UITextViewDelegate 代理,在 implementation 中实现如下两个方法。第一个是键盘出来的事件处理,上移文本输入框。
- (void)keyboardWillShow:(NSNotification *)notification { NSDictionary *userInfo = [notification userInfo]; NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; CGRect keyboardRect = [aValue CGRectValue]; keyboardRect = [self.view convertRect:keyboardRect fromView:nil]; // 根据老的 frame 设定新的 frame CGRect newTextViewFrame = _inputTextView.frame; // by michael newTextViewFrame.origin.y = keyboardRect.origin.y - _inputTextView.frame.size.height; // 键盘的动画时间,设定与其完全保持一致 NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval animationDuration; [animationDurationValue getValue:&animationDuration]; // 键盘的动画是变速的,设定与其完全保持一致 NSValue *animationCurveObject = [userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey]; NSUInteger animationCurve; [animationCurveObject getValue:&animationCurve]; // 开始及执行动画 [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:animationDuration]; [UIView setAnimationCurve:(UIViewAnimationCurve)animationCurve]; _inputTextView.frame = newTextViewFrame; [UIView commitAnimations]; }
键盘消失时的处理,文本输入框回到页面底部。
- (void)keyboardWillHide:(NSNotification *)notification { NSDictionary* userInfo = [notification userInfo]; // 键盘的动画时间,设定与其完全保持一致 NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval animationDuration; [animationDurationValue getValue:&animationDuration]; // 键盘的动画是变速的,设定与其完全保持一致 NSValue *animationCurveObject =[userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey]; NSUInteger animationCurve; [animationCurveObject getValue:&animationCurve]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:animationDuration]; [UIView setAnimationCurve:(UIViewAnimationCurve)animationCurve]; CGRect newTextViewFrame = _inputTextView.frame; newTextViewFrame.origin.y = DEVICE_HEIGHT - _inputTextView.frame.size.height; _inputTextView.frame = newTextViewFrame; [UIView commitAnimations]; }
关键点是:
一定更要从系统事件获取键盘的高度,不要 hard code。 要注意把 curve、duration 都做的。
这批那文章来自 blog.csdn.net/prevention ,转载请注明。
-
转载请注明来自:http://blog.csdn.net/prevention
相关文章推荐
- iOS开源组件__仿写QQ/微信聊天键盘(表情,问题,输入框)纯代码,无依赖
- swift实现ios类似微信输入框跟随键盘弹出的效果
- 【转】swift实现ios类似微信输入框跟随键盘弹出的效果
- swift实现ios类似微信输入框跟随键盘弹出的效果
- iOS - 自主实现类似微信语音视频信息聊天 (idoubs详细使用方法)1.0
- Swift 实现 iOS 类似微信输入框跟随键盘弹出的效果
- swift实现ios类似微信输入框跟随键盘弹出的效果
- swift实现ios类似微信输入框跟随键盘弹出的效果
- 实现类似QQ、微信聊天界面,标题栏固定,键盘不遮挡底部输入框
- swift实现ios类似微信输入框跟随键盘弹出的效果
- ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
- 类似微信的文本输入框
- Android实现类似微信的文本输入框 效果
- iOS类似微信点击评论或者回复 键盘出来 点击评论动态所在cell动态调整到键盘上方 方便用户看到自己所评论的
- AndroidRichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
- ios-day08-01(模仿QQ聊天界面。ios通知的使用(对键盘状态的监听)、枚举和分类的使用、拉伸图片、计算文本字符串的尺寸
- iOS开源组件__仿写QQ/微信聊天键盘
- iOS UI基础-10.0 QQ聊天布局之键盘及文本使用
- iOS 文本输入框随键盘上移
- Android RichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)