美文网首页
键盘上方添加自定义控件

键盘上方添加自定义控件

作者: ios_stand | 来源:发表于2017-03-30 23:06 被阅读0次

    toobar在屏幕上,控制器监听键盘的弹出退下:

    [[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(keyboardWillChangeFrame:) name:
         UIKeyboardWillChangeFrameNotification object:nil];
    
    /**
     * 监听键盘的弹出和隐藏
     */
    - (void)keyboardWillChangeFrame:(NSNotification *)note
    {
        // 键盘最终的frame
        CGRect keyboardF = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
        
        // 动画时间
        CGFloat duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
        
        [UIView animateWithDuration:duration animations:^{
            // toobar为键盘上方的自定义工具条
            self.toolbar.transform = CGAffineTransformMakeTranslation(0,  keyboardF.origin.y - [UIScreen mainScreen].bounds.size.height);
        }];
    }
    

    toobar不显示屏幕上,按钮点击才出现toobar(类似微信朋友圈点评论弹出键盘):

    - (void)viewDidLoad {
        [super viewDidLoad];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWillChangeFrame:) name:
         UIKeyboardWillChangeFrameNotification object:nil];
        //创建toobar在屏幕下方
        _toolbar = [[UITextField alloc]initWithFrame:CGRectMake(0, [UIScreen mainScreen].bounds.size.height  , [UIScreen mainScreen].bounds.size.width, 30)];
        _toolbar.borderStyle = UITextBorderStyleRoundedRect;
        [self.view addSubview:_toolbar];
        
    }
    
    - (void)keyboardWillChangeFrame:(NSNotification *)note
    {
        // 键盘最终的frame
        CGRect keyboardF = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
        
        // 动画时间
        CGFloat duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    //    NSLog(@"%f",[UIScreen mainScreen].bounds.size.height);
        
        
        [UIView animateWithDuration:duration animations:^{
            // toobar为键盘上方的自定义工具条
            CGFloat x = 0;
            if (keyboardF.origin.y - [UIScreen mainScreen].bounds.size.height == 0) {
                x = keyboardF.origin.y - [UIScreen mainScreen].bounds.size.height;
            }else{
                x = keyboardF.origin.y - [UIScreen mainScreen].bounds.size.height - _toolbar.frame.size.height;
            }
            self.toolbar.transform = CGAffineTransformMakeTranslation(0,  x );
        }];
    }
    
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        [_toolbar resignFirstResponder];
    }
    
    
    - (IBAction)onClick:(id)sender {
        [_toolbar becomeFirstResponder];
    }
    

    相关文章

      网友评论

          本文标题:键盘上方添加自定义控件

          本文链接:https://www.haomeiwen.com/subject/zqcmottx.html