2016-09-17 47 views
3

,但它不是叫我scrollViewDidScroll方法我scrollViewDidScroll功能不接受我试图检查用户是否上下滚动我的应用程序调用

任何想法,为什么它不打印received scroll当我上下滚动下来的应用程序?

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") 
    } 

} 

enter image description here

+3

你没有设置滚动视图的代表 –

回答

2

添加滚动视图的委托。每当你实现一个委托方法,你需要告诉它使用什么控制器,通常它会是self。它抓住了我几次。

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

是的,果然如此!谢谢!有什么地方我可以阅读更多关于此?就像在罕见的事件中,我在屏幕上有两个滚动部分,我将如何区分这两个部分? –

+1

老实说,我不知道这个答案,我会尝试像'scrollView1.delegate = self'和'scrollView2委托= self',我会给每个不同的标签,并检查'scrollViewDidScroll(scrollView:UIScrollView)'调用'scrollView.tag'。他们都应该调用相同的功能。 – Sarcoma

+0

保留2个属性引用到'UIScrollView'实例。当调用委托函数时,会传入'UIScrollView'实例。只需执行简单的'=='比较即可查看它是哪个实例。 –

1

您可以设置.delegate = self肉瘤表明,或:

从滚动视图CTRL拖动故事板到文件所有者(它位于视图层次列表,实际上它是由你的控制器名称的黄色圆圈图标:[O]创建帐户并选择

  • 代表
3

您需要设置滚动型的代表也不要使用标签来区分2滚动型的,而不是创造2个出口滚动型和使用,在UIScrollViewDelegate方法是这样的。

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

谢谢Nirav!这真棒,从来不知道你可以做到这一点。 –

相关问题