2009-10-30 55 views
1

我添加編程方式的UIView B到另一個的UIView A.子視圖外parentview幀事件

的幀是{{0,372},{320,44}}。 B UIView在{0,-74}處添加,寬度爲{320,74}。

我的問題是,B觸摸事件不處理。

更精確地觸摸事件的處理到同級的UIView的UITableView甲至極在即使乙UIView的被顯示在UITableView的{0,372}結束。

任何解決方案,請?

回答

0

不能在這樣的方式做到這一點。您應該將您的A和B視圖添加到另一個視圖C.並且它將起作用。

3

爲確定在其中一個觸摸事件落在視圖,可可橫穿視圖層次結構(和發送每個子視圖hitTest:withEvent:消息。反過來,這消息就本身調用pointInside:withEvent:,它返回一個布爾值,它指示視圖是否包含指定點。

想必,你可以繼承你的UIView A和重寫其pointInside:withEvent:方法返回YES也爲那些外的的邊界點,但B的內部。

+0

我有同樣的問題,因爲lefakir,並且不希望創建一個用於包含其他兩個第三種觀點。上述解決方案也涌入了我的腦海; downvote意味着解決方案不是猶太教?如果不是,爲什麼不呢? –

+0

這正是我如何確保「伸出」父母邊界的子視圖仍然能夠接收到他們的觸摸事件。完美的作品,是最乾淨的解決方案恕我直言。我沒有看到任何缺點(可能除了由於遍歷所有子視圖而造成的輕微性能下降,但似乎可以忽略不計)。 –

1

好了,你的B-UIView的是完全外在A-UIView的邊界之上。如果你在Interface bui中設置了兩個像這樣的相同幀的通用視圖並將背景設置爲不同的顏色,您將看不到B-UIView。 alt text http://img256.imageshack.us/img256/6789/screenshot20091030at350.png

這就像定義一個視圖的框架超出屏幕邊界一樣。如果沒有看到它的任何部分,它就不會陷入觸摸,因爲它在具有負值的平方根的茶的未定義空間中關閉。

的UITableView中被處理的點擊因爲B的UIView不響應鏈的。

你需要做B超的UIView的A-視圖,而不是一個無形的和不活動的子視圖兄弟姐妹。然後覆蓋在UITableView的底部。

相關問題