UITextView不在tvOS中滚动

时间:2015-11-06 11:18:05

标签: ios swift uitextview tvos apple-tv

我的电视应用中有一个UITextView,当我尝试使其可聚焦时,用户界面不会使其可聚焦,我无法滚动它。我读了一些关于它的问题,有些人说它是一个已知的问题,我们应该使用故事板。实际上我正在使用故事板但仍然无法使其工作。我还尝试将其设为selectablescrollEnableduserInteractionEnabled,然后最后也尝试了这行代码,但它们都没有工作。

descriptionLbl.panGestureRecognizer.allowedTouchTypes = [NSNumber(integer: UITouchType.Direct.rawValue)]

我还尝试打印bounds的{​​{1}} abd contentSize,这是日志

UITextView

这是我的代码可以帮助我一些人

Content Size (740.0, 914.0)
Bounds (25.0, 0.0, 740.0, 561.0)

我想我不应该做这么多伎俩,但它不会以任何方式运作。重点实际上是@IBOutlet weak var descriptionLbl: UITextView! var currentModel : Model? override func viewDidLoad() { super.viewDidLoad() descriptionLbl.selectable = true descriptionLbl.scrollEnabled = true descriptionLbl.userInteractionEnabled = true descriptionLbl.panGestureRecognizer.allowedTouchTypes = [NSNumber(integer: UITouchType.Direct.rawValue)] descriptionLbl.text = (currentModel?.description)! + (currentModel?.description)! + (currentModel?.description)! descriptionLbl?.contentInset = UIEdgeInsets(top: 0.0, left: -25.0, bottom: 0.0, right: 0.0); } ,但它不会滚动。有什么想法吗?

5 个答案:

答案 0 :(得分:8)

我相信你想要间接,而不是直接接触。以下是我如何设置可聚焦,可滚动的UITextView:

self.selectable = YES;
self.userInteractionEnabled = YES;
self.panGestureRecognizer.allowedTouchTypes = @[@(UITouchTypeIndirect)];

答案 1 :(得分:5)

这对我有用,在Swift 2.1中:

myTextView.userInteractionEnabled = true
myTextView.selectable = true
myTextView.scrollEnabled = true
myTextView.panGestureRecognizer.allowedTouchTypes = [UITouchType.Indirect.rawValue]

希望它有所帮助。

答案 2 :(得分:3)

基于之前的答案,以下是Swift 3.0.1中对我有用的内容:

  • 我必须继承UITextView以覆盖canBecomeFocused以返回true
  • 我必须设置panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)]
  • 我必须在代码中设置isUserInteractionEnabled = true - 在Interface Builder中设置它似乎不够
  • 我必须在“界面”构建器中选中“滚动已启用”(在代码中设置isScrollEnabled = true也可以使用

我找到的其他一些细节:

  • bounces = true让滚动感觉更自然(必须在代码中设置; IB设置不受尊重)
  • 必须在代码中设置
  • showsVerticalScrollIndicator = true; IB设置不受尊重
  • 覆盖didUpdateFocus(in:with:)以更改背景颜色以直观地指示焦点。

答案 3 :(得分:1)

对于Swift 4,这对我有用:

    textView.isUserInteractionEnabled = true;
    textView.isScrollEnabled = true;
    textView.showsVerticalScrollIndicator = true;
    textView.bounces = true;
    textView.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)]

答案 4 :(得分:0)

如果您使用Objective-C进行此操作,那将是非常简单的示例:

    _textView.panGestureRecognizer.allowedTouchTypes = @[@(UITouchTypeIndirect)];
    _textView.selectable = YES;
    _textView.scrollEnabled = YES;
    _textView.userInteractionEnabled = YES;

以上这些就足够了,但是,如果您使用swift进行此操作,则将无法使用。