發(fā)現(xiàn)問題
這兩天優(yōu)化app類似朋友圈頁面的時(shí)候灾常,添加了仿“微信朋友圈點(diǎn)擊放大的效果”俺叭。原本的效果是分享的圖片直接進(jìn)入詳情頁,自我感覺這個(gè)效果加上之后賊6(下圖為舒服的效果)妒貌,點(diǎn)空白的地方也可以進(jìn)去詳情通危。
這時(shí)候問題出現(xiàn)了…
當(dāng)圖片為5張7張8張的時(shí)候,由于設(shè)計(jì)原因這個(gè)tableviewCell上的collocationView沒有填充滿灌曙,點(diǎn)空白地方相應(yīng)的是collocationView但是沒有collocationCell菊碟,所以既沒有圖片放大展示,也沒有進(jìn)入詳情頁在刺,就像我手指戳空了一樣逆害。
解決思路
這個(gè)問題主要因?yàn)樵邳c(diǎn)擊空白的時(shí)候點(diǎn)擊事件被collocationView攔下了(此處應(yīng)有響應(yīng)鏈和點(diǎn)擊事件傳遞的解釋,可是 并沒有??)所以木有任何毛反應(yīng)蚣驼。要做的是要tableviewCell穿透collocationView來響應(yīng)事件魄幕。
解決方案
第一種方法為給collocationView添加手勢(shì),很蠢但是可以解決
好的??那就就這么寫了颖杏。纯陨。。
UITapGestureRecognizer *collectionvViewGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(gotoUserShareDetailVC)];
collectionvViewGesture.delegate = self;
[self.imageCollectView addGestureRecognizer:collectionvViewGesture];
- (void)gotoUserShareDetailVC{
//跳轉(zhuǎn)操作
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// 輸出點(diǎn)擊的view的類名,則不截獲Touch事件
NSLog(@"%@", NSStringFromClass([touch.view class]));
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
// 備注队丝,我的collectionCell上是UIView
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UIView"]) {
return NO;
}
}
return YES;
}
好吧靡馁,這么做實(shí)在不是很方便
第二種方法:使用響應(yīng)鏈,讓事件跳過UICollectionView傳遞到tableview的cell didSelect方法里机久,在tableviewCell里添加hitTest方法臭墨,代碼如下
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *view = [super hitTest:point withEvent:event];
if ([view isKindOfClass:[UICollectionView class]]) {
return self;
}
return [super hitTest:point withEvent:event];
}
很快,很棒膘盖,很優(yōu)雅胧弛。就這樣吧??