我在UIView中有一个TextView和一个隐藏按钮,我试图检测用户何时向下滚动到一长串文本的底部,并在它们到达底部时显示隐藏按钮。我看过一些关于如何使用scrollViewDidScroll在Obj-C中完成它的旧帖子,但不确定如何使用swift,或者如何使用TextView而不是ScrollView。任何帮助都会很棒,因为我还没有走得太远。
到目前为止,这是我尝试将obj-c帖子翻译成swift,但它对我没用,事实上我甚至不确定该函数何时被调用:
import UIKit
class MainVC: UIViewController, UIScrollViewDelegate {
@IBOutlet var textView: UIScrollView!
@IBOutlet var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
textView.delegate = self
}
func scrollViewDidScroll(textV: UIScrollView) {
if (textV.contentOffset.y >= textV.contentSize.height - textV.frame.size.height)
{
button.isHidden = false
}
}
}
感谢您提前提供任何帮助:)
答案 0 :(得分:8)
UITextView
是UIScrollView
的子类,如果您查看声明,默认情况下会看到它是UIScrollViewDelegate
,因此您可以删除UIScrollViewDelegate
声明你的控制器。相反,使控制器UITextViewDelegate
允许它调用scrollViewDidScrollMethod。
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView! {
didSet {
textView.delegate = self
}
}
@IBOutlet weak var button: UIButton! {
didSet {
button.hidden = true
}
}
func scrollViewDidScroll(scrollView: UIScrollView) {
button.hidden = scrollView.contentOffset.y + scrollView.bounds.height < scrollView.contentSize.height
}
}
答案 1 :(得分:3)
(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height
if (bottomEdge >= scrollView.contentSize.height) {
self.yourButtonName.hidden = true
}
}
答案 2 :(得分:2)
如果按钮位于视图的最后一个(self.view),那么我认为你必须检查你的contentOffset点是否在contentSize的底部。所以你可能会做类似的事情:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
float bottomEdge = scrollView.contentOffset.y +scrollView.frame.size.height;
if (bottomEdge >= scrollView.contentSize.height) {
self.yourButtonName.hidden = true
}
}