[英]iPhone: Handling touches transparently
我有一個UIViewController並與它關聯一個UIView。 UIView有許多子視圖。
如何處理UIViewController子類中指定矩形內的觸摸事件?
這種處理應該是透明的:即使UIView及其子視圖與指定的矩形相交,也應該接收其觸摸事件。
聚苯乙烯
touchesBegan / touchesMoved / touchesEnded可能是要走的路。 根據您要嘗試執行的操作,也可以選擇UIGestureRecognizer。
要確保子視圖向上傳遞事件,請在子視圖上將userInteractionEnabled設置為YES。
UIView默認情況下將其設置為YES,但是某些子類(尤其是UILabel)將其覆蓋並將其設置為NO。
僅僅因為視圖默認情況下不傳遞事件,並不一定意味着它就是這種方式。
您可以將正在使用的視圖子類化,然后讓它們將事件傳遞給視圖控制器。
另一個想法是從字面上看,在所有視圖之上都有一個透明的處理程序。 也就是說,在視圖上方有一個透明的UIView,既可以處理觸摸事件,又可以通過它們。 我不知道這在實踐中是否可行,但聽起來確實如此。
您的視圖及其控制器可以使用touchesBegan,touchesEnded或touchesMoved處理觸摸。 在touchesBegan中,您可以選擇將事件傳遞給響應者鏈中的下一個響應者。 這樣,您的每個視圖都將有機會根據觸摸事件執行某些操作。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//do something here and then pass the event on
[self.nextResponder touchesBegan:touches withEvent:event];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.