2016-09-20 57 views

回答

3

我寫的只是實現這個視圖子類:

#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 

在Interface Builder中,設置包含視圖TouchForwardingView的子視圖,然後指定集合視圖到forwardingTarget財產。

2

釘槍的前面回答的斯威夫特版本,這將在視圖 - 控制做了所有的手勢轉發到的CollectionView

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) 
} 
0

史蒂芬B的答案與雨燕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) 
} 
相關問題