如何沿InteractivePopGestureRecognizer滑动键盘?

时间:2013-12-29 17:16:27

标签: xcode ios7 keyboard uigesturerecognizer pan

我想知道如何使用可见键盘滑动ViewController?

在iOS 7中,我可以将ViewController从一侧滑到另一侧,但键盘保持不变。

总之,我想达到以下状态:

enter image description here

谢谢!

1 个答案:

答案 0 :(得分:0)

更新

我不推荐原始解决方案。虽然它表现良好(当它完全执行时),这是一个不可靠的黑客,并且可以轻易打破流行手势识别器。

我的同事Dave Lyon提出了一个很好的解决方案,使用iOS 7视图控制器转换并将其打包到一个pod中:

https://github.com/cotap/TAPKeyboardPop

安装完成后,只需导入主文件就可以了。


原件:

我很想知道是否有更好的方法,但我能够通过将键盘视图添加为视图控制器主视图的子视图来实现此行为:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.textView.inputAccessoryView = [UIView new];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    [center addObserver:self
               selector:@selector(keyboardWillHide:)
                   name:UIKeyboardWillHideNotification
                 object:nil];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)keyboardWillHide:(NSNotification *)note
{
    if (self.textView.isFirstResponder) {
        UIView *keyboardView = self.textView.inputAccessoryView.superview;
        if (keyboardView) {
            dispatch_async(dispatch_get_main_queue(), ^{
                [self.view addSubview:keyboardView];
            });
        }
    }
}

我发现你也可以用手势(通过addTarget:action:)为键盘设置动画,但是如果手势过早被取消,表现很糟糕并且没有干净的动画效果。