2016-07-15 68 views
0

滾動的開始和結束是否有使用KVO(觀察鍵值),檢測迅速scrollViewWillBeginDraggingscrollViewDidEndDecelerating的方法嗎?志願在UIScrollView中

編輯:我試過

scrollView.addObserver(self, forKeyPath: "dragging", options: NSKeyValueObservingOptions.New, context: nil) 

但它永遠不會被調用。如果我以同樣的方式觀察例如「contentOffset」,它就會被調用。是否符合KVC?

+0

你可以嘗試觀察'dragging'屬性 – dan

+0

Good suggesti上,但我的觀察員從未被稱呼(請參閱我的原始問題中的編輯)? @dan – Nirri

回答

0

您可以使用NSNotification中心添加觀察者。

在你的VC的viewDidLoad中,

override func viewDidLoad() { 
    super.viewDidLoad() 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.informBeginDragging), name: "begin", object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.informEndDragging), name: "end", object: nil) 

} 

你可以在以下兩種方法

func informBeginDragging() { 
    //do something 
} 

func informEndDragging() { 
    //do something 
} 

這兩種方法任何事情都會被觸發時,滾動視圖開始拖動或結束拖動

func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) { 
    NSNotificationCenter.defaultCenter().postNotificationName("end", object: nil) 
} 

func scrollViewWillBeginDragging(scrollView: UIScrollView) { 
    NSNotificationCenter.defaultCenter().postNotificationName("begin", object: nil) 
} 
+0

我有另一個類需要是我的模塊外部相同的scrollView的委託,所以我不能使用這些委託方法。謝謝 – Nirri

+0

如果您在其他課程中使用它們無關緊要,它只會將通知與您想要的名稱一起發佈。我看不出爲什麼這不起作用。或者我可能不會得到您的問題 –

+0

我的scrollView的委託在另一個模塊。我不能在那裏放任何代碼。 – Nirri