ScrollView的scrollRectToVisible键盘通知在iOS中无法正常工作11
我有一个滚动视图,其中包含许多文本字段作为子视图,我希望所选文本字段(_activeField)在键盘出现时向上滚动。ScrollView的scrollRectToVisible键盘通知在iOS中无法正常工作11
- (void) keyboardUP:(NSNotification *)notification
{
NSDictionary* info = [notification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height + 10, 0.0);
_scroller.contentInset = contentInsets;
_scroller.scrollIndicatorInsets = contentInsets;
CGRect aRect = App_Delegate.window.frame;
aRect.size.height -= kbSize.height;
CGRect rect = [_activeField convertRect:_activeField.frame fromView:App_Delegate.window];
if (!CGRectContainsPoint(aRect, rect.origin))
{
[_scroller scrollRectToVisible:rect animated:YES];
}
}
此代码为iOS 10工作正常,但在iOS的11,其没有工作,“scrollRectToVisible”不滚动了滚动,即使其内容的大小是正确的。
这是this issue的副本。
使用UIKeyboardFrameEndUserInfoKey
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
print(keyboardSize)
}
}
和ObjC
- (void)keyboardWillShow:(NSNotification *)notification {
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
}
这不是您链接问题的重复内容。而你的回答并不能解决问题。 –
Vin Gazoil,我有一个OPs确切问题的项目,停止使用iOS11。这是解决方案,并且之前已经讨论过。为什么不告诉我你正在谈论的内容,因为我认为你的评论在任何意义或方式上都是不恰当的。 – aug2uag
在链接的问题中,OP无法获得键盘的高度,这里OP在scrollRectToVisible函数中遇到了问题。你提供的代码可能解决你的问题,它没有解决我的问题(与OP的一样),但是恕我直言,这是一个糟糕的解决方案,因为真正的问题是,正如Peter提到的,这个函数没有在主线程中调用。对不起,如果我的第一个评论是有点粗鲁。 –
我不知道
- (void) keyboardUP:(NSNotification *)notification
,但已经看到了
- (void)handleKeyobardDidShowNotification:(NSNotification *)notification
0类似的问题
它看起来像这样不再iOS的主线程上运行11
尝试运行你打电话scrollRectToVisible主线程上进行如下
dispatch_async(dispatch_get_main_queue(), ^{
[_scroller scrollRectToVisible:targetPosition animated:YES];
});
尝试使用[TPKeyboardAvoiding(https://开头github.com/michaeltyson/TPKeyboardAvoiding)而不是,更容易 – Srdjan
我基本上很好奇,知道是否有限制这个代码的功能的iOS11中的ScrollView有任何特定的变化。 –
我有同样的问题,没有时间检查,因为生产应用程序有问题,所以我添加了库,它是固定的 – Srdjan