我知道如何使用滚动功能创建textview,但这需要您触摸textview内部并手动向上或向下滚动文本。 我想创建一个UITextview和两个按钮。按钮用作滚动按钮,一个用于向上滚动,另一个用于向下滚动,让用户控制滚动速度。 我所看到的许多例子都涉及自动滚动到底部,这不是我想要的。 任何人都可以建议在按下按钮时向上或向下滚动一到三行的方法吗? 非常感谢!
答案 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,UIScrollView
是UITextView
的超类,有关详细信息,请参阅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)
}