2015-10-05 2 views
0

У меня есть два вида; a UIView, размещенный сверху UITableView. Мне нужно знать, когда был запущен UIView, поэтому я разместил на нем UIPanGestureRecognizer. Тем не менее, это создает пользовательский интерфейс, который кажется ошибкой, потому что вы ожидаете, что UITableView за ним будет двигаться, как ваш палец.Сопряжение моего собственного UIPanGestureRecognizer с именем UIScrollView

Так что мне кажется, что мне нужно как-то соединить этот жест, сделав вид стола позади него, по крайней мере, до тех пор, пока этот вид покрытия не исчезнет.

Как подключить жест панорамы для перемещения UIScrollView?

Примечание. Если вам интересно, как выглядит обложка, на самом деле это UIImageView, который имеет снимок таблицы с фильтром, применяемым к нему по причинам пользовательского интерфейса. Когда это представление открыто, оно исчезает. Поэтому, с точки зрения пользователя, когда они начинают перетаскивать представление обложки, я хочу, чтобы они продолжали думать, что они перетаскивают представление таблицы, когда обложка исчезает.

ответ

0

Предполагая, что у вас есть контроллер с установкой табличных как вид следующего:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate 
{ 

    @IBOutlet var tableView: UITableView! 
    @IBOutlet var scrollView: UIScrollView! 

Вы можете добавить пару жестов распознавателей:

var gestureRecognizer1: UIPanGestureRecognizer = UIPanGestureRecognizer() 
    var gestureRecognizer2: UIPanGestureRecognizer = UIPanGestureRecognizer() 

Настройки вашим делегаты и добавить жест распознаватели к просмотру прокрутки:

override func viewDidLoad() 
    { 
     super.viewDidLoad() 

     scrollView.contentSize = CGSizeMake() // <-- Set your content size. 
     scrollView.delegate = self 
     tableView.delegate = self 
     gestureRecognizer1.delegate = self 
     gestureRecognizer2.delegate = self 
     tableView.addGestureRecognizer(gestureRecognizer1) 
     scrollView.addGestureRecognizer(gestureRecognizer2) 
    } 

Внедрить метод делегата на UIGestureRecognizerDelegate распознавать жесты одновременно:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool 
    { 
     return true 
    } 

Реализовать метод делегата для UIScrollViewDelegate:

func scrollViewDidScroll(scrollView: UIScrollView) 
    { 
     tableView.contentOffset = scrollView.contentOffset 
    } 
} 

Движение Tableview будут синхронизированы с точки зрения прокрутки.

+0

Я тоже подумал об этом, но когда я установил делегат 'подгонки UITableView'' panGesture' в свой 'UIViewController' (я не использую' UITableViewController'), то мое приложение вылетает из-за того, что делегат panGesture должен быть 'UIScrollView' –

+0

' UIScrollView' уже имеет 'panGestureRecognizer'. Можете ли вы использовать его для получения желаемого поведения вместо добавления другого? – Daniel

+0

Если вы говорите о том, чтобы отображать 'panGestureRecognizer' в режиме прокрутки и помещать его в другое представление, которое не может быть хорошим решением! –

0

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

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