ios 开发 中文和英文状态下 键盘的变化 textview 对键盘的适应

来源:互联网 发布:涉密网络三员 编辑:程序博客网 时间:2024/04/30 00:19

最近做了一个iOS类似回复框的控件 遇到 了许多问题

上代码

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    //注册键盘监听
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(handleWillHideKeyboard:)
                                                 name:UIKeyboardWillHideNotification
                                               object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(handleWillShowKeyboard:)
                                                 name:UIKeyboardWillShowNotification
                                               object:nil];
}
//键盘的代理方法
- (void)handleWillShowKeyboard:(NSNotification *)notification
{
    [self keyboardWillShow:notification];
}

//当键盘出现的时候调用的方法

- (void)keyboardWillShow:(NSNotification *)notification{
    //动态获取键盘高度 汉字状态和英文状态
    NSDictionary* info = [notification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;//得到键盘的高度
    if(kbSize.height == 216){
        kebordHeight = 0;
    }else{
        kebordHeight = 36;
    }
//注意 这个方法会执行两次  就是说   键盘的高度是216 这都知道

如果在汉字状态下

这个方法第一次执行 键盘高度应该+36 但是 这一次不会

这个方法第二次执行的时候 键盘的高度才会加上36

这样出现的问题是 如果想要在这里记录textView 的高度时 只能在第二次方法执行的时候记录 不然 在汉字状态下点击textView  键盘还会遮挡
}

0 0