在iOS開(kāi)發(fā)中會(huì)遇到一些設(shè)計(jì)樣式找田,需要把按鈕一部分懸空在父視圖的上面香拉,但是當(dāng)我們點(diǎn)擊該按鈕時(shí),超出了父視圖的懸空部分不會(huì)響應(yīng)該按鈕的點(diǎn)擊事件。
如圖所示 點(diǎn)擊超出父視圖(白色)的頭像區(qū)域有觸發(fā)點(diǎn)擊事件平绩。
在自定義的UIView視圖類中 重寫(xiě)如下代碼,這樣我們的點(diǎn)擊事件就有反應(yīng)了漠另。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *view = [super hitTest:point withEvent:event];
if (view == nil) {
//將坐標(biāo)由當(dāng)前視圖發(fā)送到 指定視圖 fromView是無(wú)法響應(yīng)的范圍小父視圖
CGPoint stationPoint = [_headImageView convertPoint:point fromView:self];
if (CGRectContainsPoint(_headImageView.bounds, stationPoint))
{
view = _headImageView;
}
}
return view;
}