Iphone 使用UITextView防止换行

Iphone 使用UITextView防止换行,iphone,uitextfield,Iphone,Uitextfield,使用Iphone sdk 3.1.2 我有一个启用了垂直和水平滚动的UITextView控件。我希望每一行文本都显示出来而不进行换行,这样用户就可以水平滚动来查看它。我遇到的问题是,即使启用了水平滚动,文本也会在iphone屏幕的宽度(即320像素)处缠绕 如何防止包装 谢谢我想您必须在滚动视图中放置UITextfield 使用NSString UIKit additions中的sizeWithFont:获取每行的宽度,然后将UITextView的contentSize属性设置为略宽于最长行的宽

使用Iphone sdk 3.1.2

我有一个启用了垂直和水平滚动的UITextView控件。我希望每一行文本都显示出来而不进行换行,这样用户就可以水平滚动来查看它。我遇到的问题是,即使启用了水平滚动,文本也会在iphone屏幕的宽度(即320像素)处缠绕

如何防止包装


谢谢

我想您必须在滚动视图中放置UITextfield

使用NSString UIKit additions中的sizeWithFont:获取每行的宽度,然后将UITextView的contentSize属性设置为略宽于最长行的宽度

我在尝试这种策略时遇到了一个问题,这是在为UITextView的文本属性分配字符串时出现的。分配时,UITextView将设置其contentSize.width以匹配视图的宽度,并将在分配的文本字符串中插入换行符以将其换行到该宽度。分配uitextview.text后,可以将contentSize.width设置为最长行的长度,这会在滚动视图中提供额外的空间,但换行会阻止文本填充新空间

如果在将文本加载到视图中之前设置contentsize.width,则在加载文本时contentsize将被重置

我试着在加载之前增加文本视图的帧大小,这样可以让你的长线穿过屏幕边缘。但是,您不能滚动,当您减小帧大小时,文本的换行符和contentSize的重新调整再次发生。如果在视图中输入任何文本,也会发生同样的情况


嗯,我确信uitextviews在这一点上根本不能水平滚动。我也不认为在另一个滚动视图中嵌入文本视图可以缓解这种情况。只需要在HTML中完成它

解决方案是关闭UITextView本身上的所有滚动选项,然后将其嵌入另一个UIScrollView中。您可以通过在google中搜索“DualScrollTextView”这个术语来获得实际代码。

Woot我找到了

我在.xib上将UITextView宽度设置为500。 在我的代码中,我设置了 myUITextView.text=@“有很多行的巨大字符串”

然后我开始 myUITextView.contentSize=CGSizeMake(600,myUITextView.contentSize.height)


当然,你可以使用你想要的任何宽度;确保后者更大。

我遇到了类似的问题。这是我的自动布局解决方案

  • 将UITextView置于滚动视图中。粘贴文本视图的边框以滚动视图的边框

  • UITextView的宽度和高度使用两个IBOutlet。我称之为“高度约束”和“宽度约束”

  • 在视图控制器中使用以下代码:

    - (void)viewWillLayoutSubviews {
        CGSize fit = [self.textView sizeThatFits:CGSizeMake(10000, 10000)];
        self.widthConstraint.constant = fit.width;
        self.heightConstraint.constant = fit.height;
    }
    

  • 我发现您可以让UITextView计算适合的大小,而不是自己计算每行的长度

    我花了很长时间才发现我的数据中有一个\n。所以它毕竟不是包装!以防这种情况发生在你身上:

    self.titleText.text = viewModel.title.replacingOccurrences(of: "\n", with: "");
    
    textView.textContainer.lineBreakMode = .byTruncatingTail
    textView.textContainer.maximumNumberOfLines = 1