2013-06-13 30 views
1

我想創建一個完全透明的UIView覆蓋(並有子視圖)來接收觸摸。我可以將alpha設置爲較低值(如0.02)以獲得近似效果。我可以創建一個完全透明的UIView來接收觸摸嗎?

但我不知道是否有可能通過其他UIView配置alpha == 0 UIView接收觸摸?

+1

爲什麼你不使用UIButton與服裝風格..? –

+0

@NitinGohel我不知道。不知道它是否適合我的問題。 – smilingpoplar

+0

看看你是否想要觸摸你的Uivew的事件,然後用事件,手勢等代碼爲它,但使用Button你可以訪問它的IBAction並獲得點擊事件,如果按鈕的風格是custome,那麼也不需要設置alpha。使用UIView很容易。 –

回答

4

您可以通過覆蓋在班級的完全透明視圖的hitTest:withEvent:方法,比如實現這一點:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    return self; 
} 

hitTest:withEvent:的實施並不一定是簡單的,當然。問題是,只要hitTest:withEvent:返回該視圖,您甚至可以導致即使是完全透明的視圖也可以觸摸。

但是請注意,使用hitTest:withEvent:來解決這個問題是一個很簡單的方法,可以創建一些非常奇怪的錯誤。謹慎使用此方法。

+0

謝謝,讓我試試 – smilingpoplar

+0

偉大的,凌駕'hitTest:withEvent:'的作品! – smilingpoplar

+0

是的,搞亂這種方法可能有風險。如何覆蓋'drawRect:'?覆蓋,這是非常有據可查的。它可以通過一些自定義標誌來控制,或者調用'[super drawRect:...];'將視圖以其所有屬性等以常規方式繪製,或者根本不會在不可見的情況下執行任何操作, @smilingpoplar會發明的可調式狀態。 –

3

更好的方式來做到這一點是設置背景色:

UIView *view = ...; 
view.backgroundColor = [UIColor clearColor]; 

添加UITapGestureRecognizer這個掛鉤選擇到割膠迴應。

+0

但UIView有一些子視圖。設置其backgroundColor不能隱藏這些子視圖。 – smilingpoplar