最近做的项目中,有一个类似微博中的评论转发功能,屏幕底端有一个输入框用textView来做,当textView成为第一响应者的时候它的Y值随着键盘高度的改变而改变,保证textView紧贴着键盘,但又不会被键盘挡住。
下面是我实现的方法:(利用通知)
123456789101112 | // // // // // // // // // // [[NSNotificationCenter @selector (keyboardWillChangeFrame:) //在这里注册通知 |
下面是监听通知:
12345678910111213141516171819202122232425262728293031323334353637 | #pragma /** * */ - void )keyboardWillChangeFrame:(NSNotification { // /** notification.userInfo // UIKeyboardFrameEndUserInfoKey // UIKeyboardAnimationDurationUserInfoKey // UIKeyboardAnimationCurveUserInfoKey } */ NSDictionary // double duration // CGRect // [UIView // if (keyboardF.origin.y // self.toolbar.y //这里的<span } else { self.toolbar.y } }]; } |
当然,这里我为UIView写了一个类别,实现如下:
.h文件中声明
12345678910 | @interface UIView @property (nonatomic, @property (nonatomic, @property (nonatomic, @property (nonatomic, @property (nonatomic, @property (nonatomic, @property (nonatomic, @property (nonatomic, @end |
.m文件中实现(重写setter 和 getter)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | @implementation UIView - void )setX:(CGFloat)x { CGRect frame.origin.x self.frame } - void )setY:(CGFloat)y { CGRect frame.origin.y self.frame } - { return self.frame.origin.x; } - { return self.frame.origin.y; } - void )setCenterX:(CGFloat)centerX { CGPoint center.x self.center } - { return self.center.x; } - void )setCenterY:(CGFloat)centerY { CGPoint center.y self.center } - { return self.center.y; } - void )setWidth:(CGFloat)width { CGRect frame.size.width self.frame } - void )setHeight:(CGFloat)height { CGRect frame.size.height self.frame } - { return self.frame.size.height; } - { return self.frame.size.width; } - void )setSize:(CGSize)size { CGRect frame.size self.frame } - { return self.frame.size; } - void )setOrigin:(CGPoint)origin { CGRect frame.origin self.frame } - { return self.frame.origin; } @end |
有需要的朋友可以直接用
版权声明:本文为博主原创文章,未经博主允许不得转载。