Swift 我的scrollViewDidScroll函数未接收呼叫

Swift 我的scrollViewDidScroll函数未接收呼叫,swift,uiscrollview,Swift,Uiscrollview,我试图检查用户是否在我的应用程序上上下滚动,但它没有调用我的scrollViewDidScroll方法 当我在应用程序上上下滚动时,你知道为什么它没有打印收到的滚动条吗 import UIKit class CreateAccount: UIViewController, UITextFieldDelegate, UIScrollViewDelegate { @IBOutlet weak var scrollViewer: UIScrollView! @IBOutlet we

我试图检查用户是否在我的应用程序上上下滚动,但它没有调用我的
scrollViewDidScroll
方法

当我在应用程序上上下滚动时,你知道为什么它没有打印收到的滚动条吗

import UIKit

class CreateAccount: UIViewController, UITextFieldDelegate, UIScrollViewDelegate {

    @IBOutlet weak var scrollViewer: UIScrollView!
    @IBOutlet weak var usernameTextField: UITextField!
    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var passwordTextField: UITextField!
    @IBOutlet weak var reenterPasswordTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func scrollViewDidScroll(scrollView: UIScrollView) {
        print("received scroll")
    }

}

添加scrollview委托。每当您实现委托方法时,您需要告诉它要使用哪个控制器,通常是
self
。有几次我都被它抓住了

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.   
    scrollViewer.delegate = self
}

您可以根据建议设置
.delegate=self
或:

func scrollViewDidScroll(scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}
CTRL从故事板中的scrollView拖动到文件所有者上(它位于视图层次结构列表中,实际上它位于控制器名称旁边的黄色圆圈图标旁:[O]创建帐户,然后选择

  • 委派

您需要设置scrollview的委托,也不要使用标记来区分2个scrollview,而是创建2个scrollview出口,并在
UIScrollViewDelegate
方法中使用它

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView == scrollView1 {
         print("received scrollview 1")
    }
    else if scrollView == scrollView2 {
         print("received scrollview 2")
    }
}

即使您的scrollview委托方法未调用,也会正确指定委托,然后请检查您为scrollview添加的委托方法,由于使用旧swift版本scrollview委托和swift 4.0,此可能会发出警告

如果是这种情况,请使用以下内容更正:

旧方法:

func scrollViewDidScroll(scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}
新方法:

func scrollViewDidScroll(scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}

你没有设置scrollview的delegateYep,确实是这样!谢谢!有什么地方我可以阅读更多关于这方面的信息吗?就像在罕见的情况下,我在屏幕上有两个滚动部分,我如何区分这两个部分?老实说,我不知道这个问题的答案,我会尝试类似于
scrollView1.delegate=self
的内容>scrollView2 delegate=self
,我会给每个人一个不同的标记,并在scrollViewDidScroll(scrollView:UIScrollView)中检查通过调用
scrollView.tag
。它们应该调用相同的函数。保留对
UIScrollView
实例的两个属性引用。调用委托函数时,
UIScrollView
实例被传入。只需做一个简单的
=
比较,看看它是哪个实例。谢谢Nirav!太棒了e、 我不知道你能做到。