2015-10-12 3 views
1

При использовании UIRefresherControl в UITableView, когда вставки содержимого в виде таблицы равны 0, все работает нормально, и обновление начинается, когда вы тянете вверх, а смещение содержимого прокрутки достигает примерно - 200.UIRefreshControl & UiTableview Content Inset

Однако, когда я установил вложенный контент в UITableView на -176 (что мне нужно сделать), когда я вытягиваю до -376, обновление все еще не запускается. Включение или отключение настройки «Настроить прокрутки» не вносит никаких изменений. Что я могу сделать, должен ли я изменить какое-либо значение вставки содержимого UIRefresherControl? Или он не настраивается автоматически при изменении вставки содержимого в UITableView?

var refresher:UIRefreshControl! 

override func viewDidLoad() { 
super.viewDidLoad() 

refresher = UIRefreshControl() 
refresher.tintColor = UIColor.blackColor() 
refresher.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged) 
self.resultsTable.addSubview(refresher) 

} 


    func refresh() { 

    print("refresh table") 

    refreshTable() 

    } 

ответ

2

Вы можете вызвать на любом смещение вы хотите, если триггер события на scrollViewDidEndDragging метод делегата UITableView в:

func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) 
{ 
    if scrollView.contentOffset.y <= -60 
    { 
     refresher.sendActionsForControlEvents(UIControlEvents.ValueChanged) 
    } 
} 

В этом случае установка его Im, чтобы вызвать 60.

+0

Отличное решение для мужчин. –

3

У меня была аналогичная проблема. Изменение вставки содержимого табличного представления динамически смешивается с элементом управления обновлением.

Основной причиной является то, что контроль обновления изменяет содержание смещения и в свою очередь, вызывает scrollViewDidScroll (который где был сброшен на врезке содержание)

Решение 1. Если вы только настройки содержимого врезка один раз (так что, когда загрузка контроллера), установите его через раскадровку.

Решение 2. Если вставляемые вставки содержимого необходимо динамически установить во время просмотра делегатов методами прокрутки. Попробуйте что-то вроде этого:

func scrollViewDidScroll(scrollView: UIScrollView) { 

    let offset = scrollView.contentOffset.y 

    if offset >= -tableViewInsetHeight { 

     // Change contentInset only if contentoffset is 
     // greater than the inset 
     scrollView.contentInset = UIEdgeInsetsMake(-offset, 0, 0, 0) 

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