【发布时间】:2011-11-01 13:46:13
【问题描述】:
如何在我的 UITextView 中禁用垂直滚动?我希望它基本上只是水平滚动。
【问题讨论】:
标签: iphone ios ipad uitextview
如何在我的 UITextView 中禁用垂直滚动?我希望它基本上只是水平滚动。
【问题讨论】:
标签: iphone ios ipad uitextview
在某些情况下,当试图抑制不需要的 UITextView 滚动时,我发现向 UITextView 委托添加以下内容很有帮助(这是一个 UIScrollView 委托方法,但当然,UITextView 继承自 UIScrollView)。这可能对你有用。
- (void)scrollViewDidScroll:(id)scrollView
{
CGPoint origin = [scrollView contentOffset];
[scrollView setContentOffset:CGPointMake(origin.x, 0.0)];
}
scrollEnabled 属性呢?将 scrollEnabled 属性设置为 NO 会阻止用户滚动(双向),但有时系统会将 setContentOffset:animated: 消息发送到 UITextView。 scrollEnabled 属性适用于垂直和水平滚动。鉴于您的问题,您可能希望按原样保留 scrollEnabled。
【讨论】:
Swift 4禁用垂直滚动的解决方案:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let origin: CGPoint = scrollView.contentOffset
scrollView.contentOffset = CGPoint(x: origin.x, y: 0.0)
}
【讨论】:
如果您有自定义 textView 子类,则可以覆盖 -gestureRecognizerShouldBegin 以禁用滚动。
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]])
{
if (gestureRecognizer.view == self)
{
return NO;
}
else
{
return [super gestureRecognizerShouldBegin: gestureRecognizer];
}
}
}
【讨论】:
如果你不想垂直滚动,为什么不直接使用 UITextField?
【讨论】:
只需将contentSize 设置为视图的高度即可。
你会用这个:
CGSize scrollableSize = CGSizeMake(widthOfContent, heightOfView);
[myScrollView setContentSize:scrollableSize];
【讨论】:
将您的 UITextView 放在 UIScrollView 中。 将您的 UITextView.frame 设置为完整的文本适合一行的大小,并将 ScrollView 的 contenSize 设置为您的 UITextView.frame 的大小。
干杯 网民
【讨论】: