簡體   English   中英

覆蓋的UIControl或UIView如何知道結束於其上方的觸摸事件?

[英]How can a covered UIControl or UIView know about a touch event that ended above it?

我有一個UIControl(或無關緊要的UIView),這由另一個UIControl覆蓋。 另一個UIControl對觸摸事件反應良好。 但是,從用戶的角度來看,底層的UIControl還需要了解觸摸以及它是否真正在其上。 覆蓋的UIControl是部分透明的。

我如何在底層UIControl上獲得這種聯系?

我認為您可以通過幾種方式解決此問題...

您可以將touch事件傳遞給另一個控件...盡管我不認為將上方視圖移到另一個視圖上會起作用? 您可能需要試驗。

比較簡單的方法可能只是查看下部矩形是否包含接觸點:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self];
    if (CGRectContainsPoint(lowerView.frame, touchLocation)) {
        <doyourthing>
}

我不會馬上就想起,但您可能需要在兩個視圖之間轉換視圖坐標?!? 或者您可以使用-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event來詢問視圖本身

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM