簡體   English   中英

用戶交互已禁用視圖但已啟用子視圖(UIButtons)

[英]User interaction disabled for view but enabled for subviews (UIButtons)

我有一個視圖,其中包含幾個覆蓋UIScrollView的UIButton。 我想阻止覆蓋視圖上的用戶交互,但不阻止該視圖中包含的UIButtons。

我將這些視圖分組到單個視圖中的原因是,我可以通過更改單個屬性將alpha更改應用於視圖中的所有按鈕。 我剛剛注意到IOS 4.0中的IBOutletCollection,但我還需要針對IOS 3.0。

有沒有比覆蓋以下UIView方法更簡單的方法來實現這一點?

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;

不幸的是,如果禁用用戶與視圖的交互,則用戶與所有子視圖的交互也會被禁用。 雖然不理想,但您只需為每個按鈕制作IBOutlets並相應地進行調整。 為避免將來要寫入更多其他代碼,可以在viewDidLoad中創建NSArray並將每個按鈕折騰到其中。 然后,每次要更改所有這些按鈕上的某個屬性時,您只需循環遍歷數組並進行更改即可。 這樣,如果向組中添加另一個按鈕,則只需更新陣列,其余更改將自動傳播。

請看一下這個答案: https//stackoverflow.com/a/13414182/2082569

根據這個,您需要在自定義UIView中覆蓋此方法:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView *subview = [super hitTest:point withEvent:event];
    return subview == self.button ? subview : nil;
}

使用scrollView.scrollEnabled = FALSE禁用滾動視圖; 當您希望用戶允許使用按鈕時。 當您希望用戶使用scrollView.scrollEnabled = TRUE滾動視圖時再次啟用;

注意:您無需禁用滾動視圖的用戶交互。

暫無
暫無

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

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