似乎是一个错误或只是一个非理想的默认状态。但是根据测试项目中的代码,经过一些更精细的调整后,类似下面的内容可能会起作用。
示例代码有两个问题,一个是当键盘出现时你没有对文本的大小做任何事情,所以你无法使用或看到键盘下的文本。还有其他解决方案,但一个快速而肮脏的解决方案是更改帧大小(在提交应用程序中,我还将获取动画信息并为视图帧更改设置动画以匹配超出此问题范围的键盘动画)。你在'willShow'之类的东西中这样做,然后在'didHide'之类的东西中把它带回来。
然后,内容偏移在隐藏时会被篡改,当您在回调之前和周围将其拖出屏幕以进行隐藏和滚动视图更改时,确实会出现一些奇怪的状态。我只是保存状态并在键盘消失并更新文本视图后“修复”它。
我在情节提要中创建了一些属性和一个插座,以对文本视图进行修改。
-(无效)viewDidLoad
{
[超级视图DidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
}
-(无效)keyboardWillShow:(NSNotification *)通知
{
NSDictionary * info = [通知用户信息];
CGSize size = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
CGRect 矩形 = self.textView.frame;
rect.size.height -= size.height;
self.textView.frame = 矩形;
}
- (void)keyboardDidHide:(NSNotification *)通知
{
NSLog(@"======keyboardDidHide =======");
NSDictionary * info = [通知用户信息];
CGSize size = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
CGRect 矩形 = self.textView.frame;
rect.size.height += size.height;
self.textView.frame = 矩形;
self.hidingKeyboard = YES;
}
- (void) scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"%f", scrollView.contentOffset.y);
如果(self.hidingKeyboard == 是)
{
scrollView.contentOffset = self.lastOffset;
self.hidingKeyboard = 否;
NSLog(@"====== 重置 =======");
}
别的
self.lastOffset = scrollView.contentOffset;
}