iOS开发技能复制粘贴iOS学习笔记

IM聊天页面监听键盘的弹出,聊天视图跟随键盘上移

2016-11-04  本文已影响247人  冷洪林
//
//  ViewController.m
//  通知练习
//
//  Created by admin on 16/11/4.
//  Copyright © 2016年 冷洪林. All rights reserved.
//

#import "ViewController.h"
#import "LHLPerson.h"
#import "LHLZhaoPin.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 初始化三个Person类
    LHLPerson *p1 = [[LHLPerson alloc] init];
    
    // 初始化两个公司
    LHLZhaoPin *tencent = [[LHLZhaoPin alloc] init];
    
    // 获取通知中心(单例)
    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    
    // 监听通知(注意:监听一定要在注册之前,通俗的解释就是好比别人放屁,放完了再去肯定已经没有了,要在放之前就凑过去,哈哈哈 有点小邪恶)
    /**
     *  @param  addObserver : 通知的监听者
     *  @param SEL : 监听到通知后触发监听者的哪个方法
     *  @param name : 监听通知的名称  如果为nil,则不限制
     *  @param object : 监听哪个对象的通知  如果为nil,则不限制
     *
     */
    [center addObserver:p1 selector:@selector(oneNoti:) name:@"tencentNoti" object:nil];
    
    // 发布
    [center postNotificationName:@"tencentNoti"
            object:tencent
            userInfo:@{
                       @"title" : @"招聘前台"
                       }];
}
    // 移除通知
    [center removeObserver:p1]; // 移除p1所有的通知

@end
//
//  LHLPerson.m
//  通知练习
//
//  Created by admin on 16/11/4.
//  Copyright © 2016年 冷洪林. All rights reserved.
//

#import "LHLPerson.h"

@implementation LHLPerson

- (void)oneNoti:(NSNotification *)noti
{
    NSLog(@"%@", noti);
}

@end

好了,通知的基本用法已经搞定,接下来我们切回主题,监听键盘的弹出,聊天视图跟随键盘上移:

// 拖拽tableView的时候弹出键盘
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self.view endEditing:YES];
}
// 监听键盘弹出的通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
- (void)keyboardWillChangeFrame:(NSNotification *)noti
{
    NSLog(@"%@", noti.userInfo);
}
- (void)keyboardWillChangeFrame:(NSNotification *)noti
{
    CGRect keyboardFrame =  [noti.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    self.view.transform = CGAffineTransformMakeTranslation(0, keyboardFrame.origin.y - LHLScreenH);
}
上一篇下一篇

猜你喜欢

热点阅读