簡體   English   中英

為什么我的子類UIView在UIScrollView中沒有收到移動的觸摸?

[英]Why is my subclassed UIView not recieving touches moved when in a UIScrollView?

我有一個名為Boards的類,它是UIView一個子類,我分配了一個實例並將其放入UIScrollView ,我想要而不是他接觸到UIScrollView ,而是轉到子視圖:Boards(UIView),I只是不知道如何將UIScrollView的觸摸傳遞給UIView

PS:我將手動更改UIScrollViewcontentOffset ,因此我不需要UIScrollView的觸摸,但是在UIView

PS:UIView正在接收touchesEndedtouchesBegan事件,只是沒有touchesMoved

如果您希望UIScrollView僅以編程方式滾動,則必須將其子類化並覆蓋touchesBegan / Moved / Canceled / Ended方法。 即使這樣,你也可能遇到問題。 UIScrollView不是為忽略用戶輸入而設計的。

如果可能,您應該使用自定義視圖替換UIScrollView。 您可以更改視圖的transform屬性以移動其內容,而不是更改contentOffset

或者您可以嵌套兩個視圖,外部視圖和內部視圖。 將您的Boards視圖放在內部視圖中。 然后,不要更改contentOffset ,而是更改內部視圖的frame

如果動畫很重要,我很確定第二個選項會提供動畫過渡,第一個也可能。

嘗試關閉delaysContentTouches中的delaysContentTouches。 這將立即將所有子項觸摸直接轉發到子視圖,而不檢查它是否是滾動視圖觸摸

為什么不創建UIScrollView的子類? 然后,將子類接收的所有觸摸事件傳遞給UIView,如下所示。

@implementation SubclassOfScrollView

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.nextResponder touchesBegan:touches withEvent:event];
}

@end

這里有關於此問題的新更新(包括ZoomScrollView源代碼的鏈接+ UIScrollView內部的一些優秀解釋)。
另外,查看Apple更新的ScrollViewSuite示例。 它在第3個示例中有您描述的場景。

暫無
暫無

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

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