在tvOS上反转UITextView滚动

时间:2017-04-10 17:03:19

标签: swift nsattributedstring tvos

好的,这里很奇怪。

我有一个UITextView,我用一个属性字符串填充。 TextView不想自己滚动,所以我必须启用一些设置,特别是:

 override func viewDidLoad() {
        super.viewDidLoad()
        articleText.isUserInteractionEnabled = true
        articleText.isSelectable = true
        articleText.isScrollEnabled = true
        articleText.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)]
        articleText.bounces = true
        setup()
    }

但是,设置这些会导致scrollView以与tvOS上的其他内容相比的方式滚动。真奇怪。完整的类代码如下:

class ArticleViewController : UIViewController, ListingViewControllerProtocol {

    var listing : ListingData?

    @IBOutlet weak var articleText: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()
        articleText.isUserInteractionEnabled = true
        articleText.isSelectable = true
        articleText.isScrollEnabled = true
        articleText.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)]
        articleText.bounces = true
        setup()
    }

    func setup(){
        if let listing = self.listing {
            APIManager.sharedInstance.getShortendArticle(url: listing.url, onCompletion: { (json) in
                let article = ShortendArticle(fromJson: json)
                let html = "<h1>" + article.title + "</h1>" + article.content

                DispatchQueue.main.async(execute: {
                    let theAttributedString = try! NSAttributedString(data: html.data(using: String.Encoding.utf8, allowLossyConversion: false)!,
                                                                      options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
                                                                      documentAttributes: nil)
                    self.articleText.attributedText = theAttributedString
                })
            })

        }
    }
}

Mine与相关问题不一样,因为我并没有试图偏离tvOS标准

1 个答案:

答案 0 :(得分:0)

此代码似乎按预期工作,这意味着:

  • 向上滑动手势向下滚动文字,允许用户继续阅读更多文字。与在iOS中向上滑动相似的行为

  • 向下滑动手势向上滚动文字,允许返回到开头。

来自tvOS人机界面指南:

  

在Apple TV上,几乎所有东西都使用间接操纵手势   在对象之间移动焦点,系统将界面滚动到   保持焦点项目可见。如果您的应用实现间接   操纵,确保焦点向手势方向移动。   如果有人在遥控器上轻击或滑动,例如,请对焦   应向右移动,意味着内容可能向左移动。如果有人点击或   向上滑动,焦点应该向上移动。像照片一样的全屏元素   应该使用直接操作而不是手势移动对象   而不是焦点。例如,向右滑动即可移动照片   从左到右。

https://developer.apple.com/tvos/human-interface-guidelines/user-interaction/