Ich habe eine UICollectionView, in der ich hitTest: withEvent: in meinen UICollectionViewCells überschreibe, damit Taps direkt außerhalb der Zellen als Taps auf die Zellen registriert werden.Aufruf von didHighlightItemAtIndexPath ohne Aufruf von didSelectItemAtIndexPath für UICollectionView
Wenn ich dies tue und tippe gerade außerhalb der Zellen, die sich jetzt als Treffer registrieren, bekomme ich Aufrufe von didHighlightItemAtIndexPath und didUnhighlightItemAtIndexPath, aber ich bekomme keinen Aufruf von didSelectItemAtIndexPath. Wenn ich in die Zelle klicke, erhalte ich alle erwarteten Hervorhebungen und wähle Objektaufrufe wie zuvor.
Ich habe keine benutzerdefinierten Gestenerkennung eingerichtet und ich übergehe nicht TouchseBegan oder ähnliches.
Also weiß jemand unter welchen Bedingungen Sie einen Aufruf für didHighlightItemAtIndexPath ohne einen Aufruf von didSelectItemAtIndexPath erhalten? Gibt es eine Möglichkeit, meinen didSelectItemAtIndexPath aufzurufen? Vielen Dank.
EDIT
habe ich vergessen zu erwähnen, dass mein UICollectionView innerhalb eines Heute Widget ist, so ist es in der Notification Center Scroll-Ansicht enthalten. Wenn ich meinen Auswahlcode in didUnhighlightItemAtIndexPath verschiebe, wird er aufgerufen, wenn Sie außerhalb der Zelle tippen. Das Ergebnis ist jedoch, dass Sie nicht durch die Benachrichtigungszentrale blättern können, ohne eine der Zellen auszuwählen.
Also hat der Unterschied zwischen der Hervorhebung und der Auswahl, die ich hier erlebe, etwas damit zu tun, dass der Responder der Bildansicht die Auswahl außerhalb der Zelle aufhebt?
Anstatt "hitTest: withEvent:" zu überschreiben, überschreiben Sie ['pointInside: withEvent:'] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html# // apple_ref/occ/instm/UIView/pointInside: withEvent :). Funktioniert das besser? Die Standardimplementierung von 'hitTest: withEvent:' verwendet 'pointInside: withEvent:', aber vielleicht verwendet 'UICollectionView' auch' pointinside: withEvent: 'direkt. –
Ich hatte tatsächlich PointInside überschrieben: withEvent: als auch dies zu implementieren. Es wird immer nur von hitTest aufgerufen: withEvent :. –