所以我想在UIView(320,470)中创建一些比Viewport(320,367)更高的细节内容。
我在IB中分开创建它(见图)。一切都看起来不错,直到我setContentSize使UIScrollView可滚动..
这是我的代码放在ViewDidLoad
CGRect frame = self.uiContent.frame;
[self.uiScrollView addSubview:self.uiContent];
[self.uiScrollView setContentSize:frame.size];
调用setContentSize后,内容会以动画滚动到中间。如何防止自动滚动?
答案 0 :(得分:1)
我找到了罪魁祸首......那是UITextView
。很抱歉,如果我没有提到我在地址标签下使用UITextView作为多行标签。
在其他问题上引用“Taketo Sano”:https://stackoverflow.com/a/5673026/453407
更改我已经通过跟踪来调查自动滚动是如何完成的 call-trace,发现内部[UIFieldEditor 当输入一个字母时,会调用scrollSelectionToVisible] 的UITextField。这个方法似乎在UIScrollView上起作用 最近的UITextField的祖先。
UIScrollView
文本时, UITextView
会自动滚动到UITextView
。所以我通过继承UIScrollview
并覆盖
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated {
并且不返回任何内容以禁用自动滚动...如果您打算将来使用它,只需使用bool变量来启用/禁用它
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated {
if (!self.disableAutoScroll) {
[super scrollRectToVisible:rect animated:animated];
}
}
因此您可以在按代码更改UITextView之前禁用自动滚动,然后再启用它。