2016-10-23 11 views
0

Я хочу добавить обновления жеста в некоторых представлениях в моем приложении IOS
Обычно этот жест прокрутки выше верхних и удерживайте в течение некоторого небольшого времениКак я могу обнаружить прокрутку для обновления до события перетаскивания конца в iOS?

я мог сделать только обработчик жест, который работает, если пользователь не держать прокручивается вид более 1 вторые:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    if (scrollView == _tableView) { 
     _scrollViewDragStarted = [NSDate date]; 
    } 
} 

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { 
    if (scrollView == _tableView) { 
     if (velocity.y < 0 && targetContentOffset->y < 0) { 
      NSTimeInterval hold = [[NSDate date] timeIntervalSinceDate:_scrollViewDragStarted]; 
      if (hold > 1) { 
       // refreshing method calls here 
      } 
     } 
     _scrollViewDragStarted = nil; 
    } 
} 

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

Как я могу обнаружить такую ​​прокрутку? scrollViewWillBeginDragging: Событие не имеет параметров прокрутки: scrollViewWillEndDragging:withVelocity:targetContentOffset:

Возможно, существует другой способ реализовать это?

ответ

2

Пробуйте использовать scrollViewDidScroll(_:). https://developer.apple.com/reference/uikit/uiscrollviewdelegate/1619392-scrollviewdidscroll

Обратите внимание, что вы можете использовать UIScrollView.contentOffset.y < 0, чтобы проверить, прокручивается ли он сверху.

+2

конкретно, обнаружите, что 'contentOffset.y <0' – danh

+0

обновлено, спасибо danh! – ramacode

0

1) Вы можете использовать refreshcontrol и настроить его так, как хотите. Порекомендовал бы использовать это в качестве своего основного апи и получал бы удовольствие от анимации. плюс это универсально и используется повсеместно, поэтому пользователь уже знал бы, как использовать сравнение с вашим прокруткой и жестом «держать за секунду».

- (Недействительными) viewDidLoad {
...
UIRefreshControl * refreshControl = [[UIRefreshControl Alloc] инициализации];
[refreshControl addTarget: self action: @selector (handleRefresh :) forControlEvents: UIControlEventValueChanged];
[self.myTableView addSubview: refreshControl];
...
}

- (Недействительными) handleRefresh: (идентификатор) отправитель { // сделать ваше обновление здесь ...}

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

  • Нет связанных вопросов^_^