簡體   English   中英

UIView阻止UIScrollView的手勢識別器

[英]UIView blocking UIScrollView's gesture recognizer

嗨,我有一個像這樣的UIScrollView上的UIView UIView是一個容器,它本身是透明的,但有許多子視圖卻不是。

-------------------------
-   UIScrollView        -
-                       -
-     -------------     -   
-     -  UIView   -     -   
-     -------------     -     
-------------------------

UIView是透明的,但是可以防止UIScrollView在觸摸時滾動。 一些子視圖是按鈕,因此它們具有覆蓋滾動動作的輕擊手勢,但UIView框架中的透明間隙仍會阻止滾動手勢。 有辦法防止這種情況發生嗎? 我仍然想將其用作容納其他子視圖的容器。

您不應該將userInteractionEnabled設置為NO,因此您希望它難以處理。 我認為正確的方法是繼承UIView並重寫- pointInside: withEvent:如下所示。

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    CGPoint localPoint = [self convertPoint:point fromView:self];
    for (UIView *subview in self.subviews) {
        if ([subview pointInside:localPoint withEvent:event]) {
            return YES;
        }
    }
    return NO;
}

使用此視圖,您可以與視圖內的子視圖進行交互,如果不觸摸子視圖,則可以滾動滾動視圖。

謝謝你們的答案。 但是我發現此解決方案對我來說很有效:

父視圖在iOS中將userInteractionEnabled設置為NO時如何獲得觸摸

在滾動視圖內的視圖上將userInteractionEnabled設置為FALSE

myView.userInteractionEnabled = FALSE;

暫無
暫無

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

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