首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIScrollView in tvOS

UIScrollView in tvOS
EN

Stack Overflow用户
提问于 2015-11-16 17:45:09
回答 3查看 1.9K关注 0票数 1

我有一个类似于下面图像中的视图层次结构(蓝色是场景的可见部分):

因此,我有一个包含许多元素的UIScrollView,其中我只显示两个按钮,因为它们与问题相关。运行应用程序时,第一个按钮是可见的,而另一个按钮位于最初可见区域之外。第一个按钮也是preferredFocusedView。

现在,我正在使用UIFocusGuide更改两个按钮之间的焦点,这是可行的(在didUpdateFocusInContext:中进行了检查)。但是,当Button2聚焦时,我的滚动视图不会向下滚动。

滚动视图被固定在superview上,我在视图控制器的viewDidLoad中给它适当的内容大小。

有什么想法吗?如何使滚动视图滚动?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-05 13:49:26

最后,我通过将scrollView.contentSize设置为viewDidLoad中的适当大小来解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2018-03-22 09:45:05

看看UIScrollView.panGestureRecognizer.allowedTouchTypes。它是一个NSNumber数组,其值基于UITouchTypeUITouch.TouchType (取决于语言版本)。默认情况下,allowedTouchTypes包含两个值-- directstylus。这意味着您的UIScrollView实例将不响应来自远程控制的信号。添加以下行来修复它:

Swift 4

代码语言:javascript
复制
self.scrollView.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)]

Swift 4.2 & 5

代码语言:javascript
复制
self.scrollView.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouch.TouchType.indirect.rawValue)]

另外,不要忘记为UIScrollView设置一个正确的UIScrollView

代码语言:javascript
复制
self.scrollView.contentSize = CGSize(width: 1920.0, height: 2000.0)
票数 3
EN

Stack Overflow用户

发布于 2016-01-05 12:13:41

您需要添加pan手势识别器。我从这里学到了:http://www.theappguruz.com/blog/gesture-recognizer-using-swift。我添加了更多的代码,以使它不会奇怪地滚动,例如在水平方向。

代码语言:javascript
复制
var currentY : CGFloat = 0   //this saves current Y position

func initializeGestureRecognizer()
{
    //For PanGesture Recoginzation
    let panGesture: UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: Selector("recognizePanGesture:"))
    self.scrollView.addGestureRecognizer(panGesture)
}

func recognizePanGesture(sender: UIPanGestureRecognizer)
{
    let translate = sender.translationInView(self.view)
    var newY = sender.view!.center.y + translate.y

    if(newY >= self.view.frame.height - 20) {
        newY = sender.view!.center.y    //make it not scrolling downwards at the very beginning
    }
    else if( newY <= 0){
        newY = currentY                 //make it scrolling not too much upwards
    }

    sender.view!.center = CGPoint(x:sender.view!.center.x,
        y:newY)
    currentY = newY

    sender.setTranslation(CGPointZero, inView: self.view)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33741485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档