在論壇上看到這樣一條需求:
UITableViewCell上面放Unbutton 溶浴,btn點擊事件禁止情況下點擊btn,會響應cell的點擊事件。項目需求是cell和btn的點擊事件各自干各自的事情。 怎么讓btn 在禁止點擊時候筝闹,點擊btn,cell事件不響應铅鲤。求思路。万牺。罗珍。
暫時想到一個方法:
1.自定義TableViewCell
2.重寫- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
方法
3.如果point在子視圖Button之上,并且Button的交互為NO狀態(tài),直接返回NO,欺騙系統(tǒng)不在Cell之上
示例代碼:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
BOOL isInside = [super pointInside:point withEvent:event];
for (UIView *subView in self.subviews.reverseObjectEnumerator) {
// 獲取Cell中的ContentView
if ([subView isKindOfClass:NSClassFromString(@"UITableViewCellContentView")]) {
for (UIView *sSubView in subView.subviews.reverseObjectEnumerator) {
// 獲取ContentView中的Button子視圖
if ([sSubView isKindOfClass:[UIButton class]]) {
// point是否在子視圖Button之上
BOOL isInSubBtnView = CGRectContainsPoint(sSubView.frame, point);
// 子視圖Button的交互功能是否禁用
BOOL isButtonUserInteractionDisabled = sSubView.userInteractionEnabled ? NO : YES;
isInside = isInSubBtnView && isButtonUserInteractionDisabled ? NO : YES;
}
}
}
}
return isInside;
}