2015-07-27 2 views
0

У меня есть UICollectionView и UIButton над ним (на правом краю). Но в рамке кнопки коллекцияView теряет свойство прокрутки.Поместите кнопку над UICollectionView и поддерживайте прокрутку

Я не знаю, есть ли способ поддерживать оба взаимодействия, кнопка касаться внутри и свиток CollectionView.

ответ

0

Ну, я понял, как сделать это, но вместо кнопок, которые я использовал в качестве UITapGestureRecognizer rounak предлагает:

let tapGesture = UITapGestureRecognizer(target: self, action: "collectionViewDidReceiveTap:") 
    tapGesture.delegate = self 
    self.collectionView.addGestureRecognizer(tapGesture) 

Как я хотел конкретный прямоугольник, чтобы быть «tapable» Я реализован UIGestureRecognizerDelegate протокол, этот кусок кода сделать это:

public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    let collectionViewCurrentCell = self.collectionView.layoutAttributesForItemAtIndexPath(NSIndexPath(forItem: Int(self.currentPage), inSection: 0)) 
    let cellFrameInSuperview = collectionView.convertRect(collectionViewCurrentCell!.frame, toView: self) 

    if gestureRecognizer.isKindOfClass(UITapGestureRecognizer) && CGRectContainsPoint(cellFrameInSuperview, touch.locationInView(self)) { 

     return false 
    } 
    return true 
} 

где cellFrameInSuperview должна быть область, где TapGesture не должен ничего делать. Но отличается от UIButton, свиток продолжает работать во всех границах коллекции.

Если у вас есть какие-либо вопросы о том, как и почему это работает, оставьте комментарий.

0

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

+0

Ну, хорошо, я использовал его, он работает, но теперь я потерял вызов «didSelectItemAtIndexPath» моей коллекцииView Delegate – RodolfoAntonici

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