2014-12-20 2 views
1

У меня есть вид сверху на UITableView. Но мне нужно вызвать событие прокрутки для события UITableView, пока пользователь перетаскивает верхний вид.Как вызвать событие scrollViewWillEndDragging?

Я добавил UIPanGestureRecognizer на взгляд, и инициировать событие scrollViewDidScroll успешно при использовании setContentOffset:

@IBAction func handleScroll(sender: UIPanGestureRecognizer) 
{ 
    if sender.state == UIGestureRecognizerState.Changed 
    { 
     let transtion = sender.translationInView(self.contentViewContainer) 

     tableViewController.tableView.setContentOffset(CGPointMake(0, 0 - transtion.y), animated: false) 
    } 
} 

// UITableView delegate 
override func scrollViewDidScroll(scrollView: UIScrollView) 
{ 
    // this will be called while using setContentOffset. 
} 

Но Как вызвать scrollViewWillEndDragging событие для этого случая?

@IBAction func headerScroll(sender: UIPanGestureRecognizer) 
{  
    if sender.state == UIGestureRecognizerState.Ended 
    { 
     // Do what? 
    } 
} 

override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) 
{ 
    // To trigger this? 
} 
+0

на том, что события делают вас хотите вызвать 'scrollViewWillEndDragging'? –

ответ

0

Вы не обязаны «запускать» методы делегирования. Вы можете напрямую вызвать scrollViewWndEndDragging().

Однако имейте в виду, что некоторые вещи, такие как прокрутка, происходят в основном потоке, поэтому вы, вероятно, не увидите, что ваши обновления произошли до тех пор, пока действие пользователя не завершится.

0

Вместо того, чтобы пытаться вызвать scrollViewWillEndDragging, вы не можете позвонить:

[tableView setContentOffset:tableView.contentOffset animated:NO]; 

Он должен остановить таблицу с прокруткой.

0

UITableView имеет свойство под названием «panGestureRecognizer» (на самом деле это свойство UIScrollView). Вы можете взять ссылку на нее и добавить ее в свой наложенный вид. Таким образом вы будете запускать любые связанные с UIScrollView события.

UIPanGestureRecognizer *pan = myTableView.panGestureRecognizer; 
[myOverlaidView addGestureRecognizer:pan]; 
1

Почему бы вам не отследить табличное пространство вместо прокрутки.

tableView:didEndDisplayingCell:forRowAtIndexPath: 

Этот метод будет вызываться после отображения каждой ячейки.

0

При установке вида таблицы делегата, он внутренне устанавливает свой класс на вид делегат прокрутки, а также, вы можете непосредственно осуществлять

Проверят это заявление о UITableViewDelegate @protocol UITableViewDelegate

Смежные вопросы