使用 xib 将手势添加到 UICollectionViewCell 子视图
Posted
技术标签:
【中文标题】使用 xib 将手势添加到 UICollectionViewCell 子视图【英文标题】:Add Gesture to UICollectionViewCell subview with xib 【发布时间】:2014-02-16 12:05:12 【问题描述】:我正在尝试使用 xib 向 UICollectionViewCell
的子视图添加手势,我正在这样做:
.h
@interface MyCell : UICollectionViewCell <UIGestureRecognizerDelegate>
@property (weak, nonatomic) IBOutlet UIView *containerButton;
@end
.m
@implementation MyCell
- (id)initWithCoder:(NSCoder *)aDecoder
self = [super initWithCoder:aDecoder];
if (self)
[self initialize];
return self;
- (void)initialize
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[panGestureRecognizer setDelegate:self];
if (self.containerButton)
NSLog(@"ok"); //not enter here
[self.containerButton addGestureRecognizer:panGestureRecognizer];
-(void)prepareForReuse
[super prepareForReuse];
if (self.containerButton)
NSLog(@"ok 2");
我已经创建了与xib文件连接的UICollectionViewCell子类,在这里我创建了容器按钮视图,如果我尝试在initialize方法中添加手势,containerButton为nil,所以不起作用,但是在prepareForReuse
方法不为空,我可以在那里添加手势吗?或者我可以在其他地方做吗?
【问题讨论】:
【参考方案1】:试试这个:
- (void)awakeFromNib
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[panGestureRecognizer setDelegate:self];
if (self.containerButton)
NSLog(@"ok"); //not enter here
[self.containerButton addGestureRecognizer:panGestureRecognizer];
【讨论】:
以上是关于使用 xib 将手势添加到 UICollectionViewCell 子视图的主要内容,如果未能解决你的问题,请参考以下文章
在 XIB 中添加手势时,iOS 应用程序崩溃并显示消息“-[UITapGestureRecognizer setFrame:]”
iOS 9:在故事板/xib 中设置了手势识别器,以添加到多个视图(不起作用)
将 UITapGestureRecognizer 添加到 XIB