簡體   English   中英

子視圖在父視圖中接收其框架外的觸摸

[英]Subview receiving touches outside its frame in parent view

我不知道為什么會這樣,但是我有一個UIView的子類,該子類已添加到我的視圖控制器的視圖中。

productView = [[SKUProductView alloc]initWithFrame:CGRectMake(60,768, 700, 550)];
[self.view addSubview:productView];

該視圖從屏幕外開始,並在平移手勢事件上在屏幕上進行動畫處理。盡管該視圖不在屏幕上,但它正在其自身框架之外接收觸摸事件。 我已經通過重寫子視圖中的hitTest方法開發了一種變通方法,如果touch事件不在其框架之內,則將hitTest調用返回給超級視圖。

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    //Test to determine if view is offscreen or if touch is outside its frame
    if (self.frame.origin.y >= 768 || point.x > self.frame.size.width)
    {
        return [super hitTest:point withEvent:event];
    }
    else if (point.y < kSKU_SCROLLVIEW_Y_OFFSET)
    {
        return [_productTabBar hitTest:point withEvent:event];
    }

    return _productScrollView;

}

但我想知道為什么子視圖首先會在其自身框架之外接收觸摸事件?

為什么不使用

CGRectContainsPoint(rect, point);

確定接觸點是否在視野之內?

可以肯定的是,使用NSStringFromCGRect()函數在控制台上打印視圖框架,以便您了解正在發生的事情。

暫無
暫無

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

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