diff --git a/Classes/AQGridView.m b/Classes/AQGridView.m index 134a109..b2550b8 100755 --- a/Classes/AQGridView.m +++ b/Classes/AQGridView.m @@ -1105,21 +1105,21 @@ - (void) _selectItemAtIndex: (NSUInteger) index animated: (BOOL) animated scrollPosition: (AQGridViewScrollPosition) position notifyDelegate: (BOOL) notifyDelegate numFingersTouch: (NSUInteger) numFingers { - if ( _selectedIndex == index ) - return; // already selected this item - - if ( _selectedIndex != NSNotFound ) - [self _deselectItemAtIndex: _selectedIndex animated: animated notifyDelegate: notifyDelegate]; + if ( index == NSNotFound || index == _selectedIndex || _flags.allowsSelection == 0 ) + return; + + if ( notifyDelegate && _flags.delegateWillSelectItem ) + index = [self.delegate gridView: self willSelectItemAtIndex: index]; - if ( _flags.allowsSelection == 0 ) - return; + if ( notifyDelegate && _flags.delegateWillSelectItemMultiTouch ) + index = [self.delegate gridView: self willSelectItemAtIndex: index + numFingersTouch: numFingers]; - if ( notifyDelegate && _flags.delegateWillSelectItem ) - index = [self.delegate gridView: self willSelectItemAtIndex: index]; + if ( index == NSNotFound || index == _selectedIndex ) + return; - if ( notifyDelegate && _flags.delegateWillSelectItemMultiTouch ) - index = [self.delegate gridView: self willSelectItemAtIndex: index - numFingersTouch:numFingers]; + if ( _selectedIndex != NSNotFound ) + [self _deselectItemAtIndex: _selectedIndex animated: animated notifyDelegate: notifyDelegate]; _selectedIndex = index; [[self cellForItemAtIndex: index] setSelected: YES animated: animated];