向上或向下滚动文本视图的按钮

时间:2018-02-13 03:23:32

标签: ios swift uitextview

我知道如何使用滚动功能创建textview,但这需要您触摸textview内部并手动向上或向下滚动文本。 我想创建一个UITextview和两个按钮。按钮用作滚动按钮,一个用于向上滚动,另一个用于向下滚动,让用户控制滚动速度。 我所看到的许多例子都涉及自动滚动到底部,这不是我想要的。 任何人都可以建议在按下按钮时向上或向下滚动一到三行的方法吗? 非常感谢!

3 个答案:

答案 0 :(得分:1)

    @IBOutlet weak var textView: UITextView!

    @IBAction func upButton(_ sender: Any) {
        let currentOffset = textView.contentOffset
        let padding : CGFloat = 10 // Change as your choice
        textView.setContentOffset(
            CGPoint(
                x: currentOffset.x,
                y: currentOffset.y - padding < 0 ? 0 : currentOffset.y - padding
            ),
            animated: true
        )

    }


    @IBAction func downButton(_ sender: Any) {
        let currentOffset = textView.contentOffset
        let contentHeight = textView.contentSize.height
        let padding : CGFloat = 10.0 // Change as your choice
        textView.setContentOffset(
            CGPoint(
                x: currentOffset.x,
                y: currentOffset.y + padding > contentHeight ? contentHeight : currentOffset.y + padding
            ),
            animated: true
        )
    }

答案 1 :(得分:0)

使用此功能 - 单击按钮时更新内容偏移

@IBAction func btnUPClick(_ sender: UIButton)
{
    if txtv.contentSize.height > txtv.contentOffset.y + txtv.frame.size.height // this condition checks textview reached at bottom
    {
    txtv.setContentOffset(CGPoint(x:txtv.contentOffset.x , y:txtv.contentOffset.y + 10////change it according to requirement ) , animated: true)
    }

}

@IBAction func btnDownClick(_ sender: UIButton)
{
    if txtv.contentOffset.y > 0 // // this condition checks textview reached at top
    {
    txtv.setContentOffset(CGPoint(x:txtv.contentOffset.x , y:txtv.contentOffset.y - 10 //change it according to requirement  ) , animated: true)
    }
}

如果您有任何问题,请告诉我......

答案 2 :(得分:0)

您可以使用UIScrollViewDelegate功能向上或向下滚动contentView,UIScrollViewUITextView的超类,有关详细信息,请参阅apple documentation

首先向您的班级实施UIScrollViewDelegate并使用以下简单方法。

var scrollSpeed = CGFloat()

func toScrollUp(){
   scrollSpeed += 100
   myTextView.scrollRectToVisible(CGRect(x: 0, y: scrollSpeed, width: myTextView.frame.width, height: myTextView.frame.height), animated: true)
}

func toScrollDown(){
   scrollSpeed -= 100
   myTextView.scrollRectToVisible(CGRect(x: 0, y: scrollSpeed, width: myTextView.frame.width, height: myTextView.frame.height), animated: true)
}