2016-09-20 5 views
3

Ich habe ein UICollectionView in meinem UIViewController bekam und ich mag es Gesten innerhalb und außerhalb der UICollectionView reagieren. Standardmäßig reagiert die UICollectionView nur auf die Gesten innerhalb ihrer eigenen view aber wie kann ich es auf Swipes außerhalb seiner view reagieren lassen?Wie eine Kollektion reagieren machen Gesten außerhalb seiner eigenen Ansicht zu verschieben

demo

Dank.

+1

Verwenden 'berührt: began' in Ihrem 'viewController' – Santosh

Antwort

3

Ich schrieb eine Ansicht der Unterklasse, die gerade dies erreicht:

#import <UIKit/UIKit.h> 

@interface TouchForwardingView : UIView 

@property (nonatomic, weak) IBOutlet UIResponder *forwardingTarget; 

- (instancetype)initWithForwardingTarget:(UIResponder *)forwardingTarget; 


@end 

#import "TouchForwardingView.h" 

@implementation TouchForwardingView 

- (instancetype)initWithForwardingTarget:(UIResponder *)forwardingTarget 
{ 
    self = [super init]; 
    if (self) 
    { 
     self.forwardingTarget = forwardingTarget; 
    } 

    return self; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [super touchesBegan:touches withEvent:event]; 
    [self.forwardingTarget touchesBegan:touches withEvent:event]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [super touchesEnded:touches withEvent:event]; 
    [self.forwardingTarget touchesEnded:touches withEvent:event]; 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [super touchesCancelled:touches withEvent:event]; 
    [self.forwardingTarget touchesCancelled:touches withEvent:event]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [super touchesMoved:touches withEvent:event]; 
    [self.forwardingTarget touchesMoved:touches withEvent:event]; 
} 

@end 

im Interface Builder, stellen Sie die Subview des enthaltenden Hinblick auf TouchForwardingView, dann ordnen Sie die Sammlung im Hinblick auf die forwardingTarget Eigenschaft.

2

Swift-Version von Nagler des anwer, das alle Gesten auf dem Viewcontroller auf die Kollektion

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    collectionView.touchesBegan(touches, withEvent: event) 
} 
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    collectionView.touchesEnded(touches, withEvent: event) 
} 
override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) { 
    collectionView.touchesCancelled(touches, withEvent: event) 
} 
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    collectionView.touchesMoved(touches, withEvent: event) 
} 
Antwort
0

Steven B getan weiterleiten wird mit Swift 4 :)

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    collectionView.touchesBegan(touches, with: event) 
} 
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
    collectionView.touchesEnded(touches, with: event) 
} 
override func touchesCancelled(_ touches: Set<UITouch>?, with event: UIEvent?) { 
    collectionView.touchesCancelled(touches!, with: event) 
} 
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 
    collectionView.touchesMoved(touches, with: event) 
} 
Verwandte Themen