2015-11-06 3 views
0

Приложение должно получить местоположение экрана (x, y), когда выбрана ячейка UICollectionView.Как определить местоположение экрана на UICollectionView?

Я пробовал touchesBegan, но он не работает. И я также тестировал UITapGestureRecognizer и gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool, когда он установлен true или false, он работает либо с жестом, либо с нажатием на ячейку, а не с обоими.

Любой способ получить два действия одновременно?

Спасибо.

+0

Что вы подразумеваете под «или жестом или постукиванием»? Какой другой жест? – beyowulf

+0

@beyowulf это означает, что если для gesture 'shouldReceiveTouch' установлено значение true, вызов gesture вызывается и коллекция cell' didSelectItemAtIndexPath' этого не делает. Когда он установлен в значение false, вызов коллекции 'didSelectItemAtIndexPath' вызывает вызов и жест не делает. – jdleung

ответ

0

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

Не использовать didSelectItemAtIndexPath. Переместите этот код в gestureRecognizer. Если вам нужна indexPath для крана что-то вроде:

let tapLocation = gesture.locationInView(self.view) 
let indexPath = collectionView.indexPathForItemAtPoint(tapLocation) 

Если вам не нравится, что вы можете попробовать реализовать

optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, 
shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool 

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

+0

2-й не работает, но первый работает отлично! Большое спасибо! – jdleung