Ho un UICollectionView in cui ho overrode hitTest: withEvent: nel mio UICollectionViewCells per consentire i tap appena fuori dalle celle di registrarsi come tap sulle celle.Chiama a didHighlightItemAtIndexPath senza una chiamata a didSelectItemAtIndexPath per UICollectionView
Quando faccio questo e tocco appena fuori dalle celle che ora registrano come hit, ricevo chiamate a didHighlightItemAtIndexPath e hoUnhighlightItemAtIndexPath, ma non ottengo una chiamata a didSelectItemAtIndexPath. Se tocco all'interno della cella ottengo tutte le evidenziazioni attese e seleziono le chiamate degli oggetti come facevo prima.
Non ho alcun set di riconoscimento personalizzato di gesture e non sovrascrivo i touchBegan o qualcosa del genere.
Quindi qualcuno sa a quali condizioni si ottiene una chiamata a didHighlightItemAtIndexPath senza una chiamata a didSelectItemAtIndexPath? C'è un modo per ottenere il mio didSelectItemAtIndexPath chiamato? Grazie.
EDIT
Ho dimenticato di dire che il mio UICollectionView si trova a oggi widget, in modo che è contenuto all'interno della vista di scorrimento Centro di notifica. Se sposto il mio codice selezionato in didUnhighlightItemAtIndexPath, viene chiamato quando si tocca all'esterno della cella, ma il risultato è che non è possibile scorrere effettivamente il Centro notifiche senza selezionare una delle celle.
Quindi, forse la differenza tra l'evidenziazione e la selezione che sto vivendo qui ha qualcosa a che fare con il risponditore della vista scroll che cancella la selezione al di fuori della cella?
Invece di eseguire l'override di 'hitTest: withEvent:', provare a sovrascrivere ['pointInside: withEvent:'] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html# // apple_ref/OCC/INSTM/UIView/pointInside: withEvent :). Funziona meglio? L'implementazione predefinita di 'hitTest: withEvent:' usa 'pointInside: withEvent:', ma forse 'UICollectionView' usa anche' pointInside: withEvent: 'direttamente. –
In realtà avevo overridden pointInside: withEvent: anche per implementarlo. Viene sempre e solo chiamato da hitTest: withEvent :. –