当UITextField文本发生更改时,UIScrollView会滚动到底部

时间:2011-02-19 03:10:33

标签: ios uiscrollview uitextview uiscrollviewdelegate uitextviewdelegate

现在设置,我在UIScrollView中有两个UITextView。这一点是UITextViews本身不滚动,随着更多文本的添加,它们只会变大(它们的内容大小)。 UIScrollView处理视图的所有向上和向下滚动,无论文本有多少(与主题视图位于消息视图上方的Mail.app类似,等等)。那就是说,我现在遇到了一个问题。当我以编程方式将文本添加到我的UITextView(在此代码中为bodyText)时,UIScrollView会因某种原因自动滚动到底部。

要添加我刚刚做的文字:

NSRange selectedRange = [bodyText selectedRange];
NSString *selectedText = [bodyText.text substringWithRange:selectedRange];
bodyText.text = [bodyText.text stringByReplacingCharactersInRange:selectedRange withString:[NSString stringWithFormat:@"<b>%@</b>", selectedText]];

因此,例如,如果我有垂直2000个像素的文本并且当前滚动到位置400然后在那里添加文本,那么UIScrollView将一直下降到2000.

我试图通过继承UISCrollView并覆盖-setContentOffset来阻止它,但那会冻结所有滚动。

我的问题是,为什么它首先一直滚动到底部?当用户点击屏幕上其他位置的按钮时,文本就会被添加,滚动与任何手指拖动或任何东西无关。

1 个答案:

答案 0 :(得分:0)

在“滚动视图编程指南”中,您将获得:

  

使矩形可见

     

也可以滚动   矩形区域,所以它   可见。这特别有用   当应用程序需要显示一个   目前在...之外的控制   可见区域进入可见视图。   scrollRectToVisible:动画:   方法滚动指定的矩形   所以它只是在里面可见   滚动视图。如果是动画参数   是的,矩形滚动到   以恒定的速度观看。和。一样   setContentOffset:animated:,if   动画被禁用,代表是   发送了一个scrollViewDidScroll:   信息。如果启用了动画,则   代表被发送了一系列   scrollViewDidScroll:消息为   动画进展。如果是   scrollRectToVisible:animated:the   滚动视图的跟踪和拖动   属性也是NO。

     

如果启用了动画   scrollRectToVisible:animated :, the   代表收到一个   scrollViewDidEndScrollingAnimation:   消息,提供通知   滚动视图已到达   指定的位置和动画是   完整。

因此,您可以使用此功能锁定UITextView上的可见性。