【发布时间】:2014-01-16 15:38:13
【问题描述】:
我想知道如何使用可见键盘滑动 ViewController?
在 iOS 7 中,我可以左右滑动 ViewController,但键盘保持不动。
简而言之,我想达到以下状态:
谢谢!
【问题讨论】:
标签: xcode ios7 keyboard uigesturerecognizer pan
我想知道如何使用可见键盘滑动 ViewController?
在 iOS 7 中,我可以左右滑动 ViewController,但键盘保持不动。
简而言之,我想达到以下状态:
谢谢!
【问题讨论】:
标签: xcode ios7 keyboard uigesturerecognizer pan
我不能推荐原始解决方案。虽然它表现良好(当它完全表现时),但它是一个不可靠的 hack,并且很容易破坏弹出手势识别器。
我的同事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:),但性能很差,如果过早取消手势,则无法清晰地动画。
【讨论】: