在我的应用程序中,我有一个 UIScrollView,其中包含一些文本字段,如果编辑了这些文本字段,它们可能恰好位于键盘下方。我用这条线处理了这个:
[_scrollView setFrame:CGRectMake(_scrollView.frame.origin.x, _scrollView.frame.origin.y, _scrollView.frame.size.width, _scrollView.frame.size.height - (_keyboardHeight - 44))];
[_scrollView scrollRectToVisible:_destinationFrame animated:YES];
如果我打破这些陈述,一切似乎都井井有条,内容大小正确, ScrollView 的帧正确,接收到的目标帧正确,进入 scrollRectToVisible 只是跳过该语句到下一个一、实现scrollView委托(delegate)方法
- (void)scrollViewWillBeginDraggingUIScrollView *)scrollView;
插入断点没有效果,使用
[_scrollView scrollsToTop];
反而也没有效果。所以程序化滚动似乎完全没有效果。这在升级到 iOs 8 SDK 之前工作得非常好。有谁知道是什么原因造成的?
ScrollRectToVisible 可能没有滚动,因为 View 可能认为“rect”在键盘向上动画时已经可见。
我总是通过监听事件 UIKeyboardDidShowNotification
来处理这个问题,然后将 ScrollView 的 contentOffset
调整为带有一些填充的矩形的 Y 原点。此时您可能还需要增加内容大小以避免用户在键盘打开时尝试滚动屏幕时出现捕捉行为。
反转 UIKeyboardWillHideNotification
或 UIKeyboardDidHideNotification
关于ios - UIScrollView 编程滚动不工作 iOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039815/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |