簡體   English   中英

如何確定哪個UIView超級視圖導致子視圖具有userInteractionEnabled = NO?

[英]How do I determine which UIView superview is causing the subview to have userInteractionEnabled = NO?

我有一個UIView出現了userInteractionEnabled = NO,我不知道為什么。 Interface Builder中的設置對所有視圖進行了userInteractionEnabled檢查,代碼中沒有任何內容將用戶交互設置為NO。 但是,如果我在調試期間檢查值,則該視圖和所有超級視圖的userInteractionEnabled == NO。

我在視圖控制器中使用以下代碼來循環所有視圖並檢查其交互狀態,甚至將啟用的值顯式設置為YES:

BOOL *isEnabled = self.someView.userInteractionEnabled;
NSArray *_allViews = self.someView.window.subviews;
for (UIView *currentView in _allViews) {
    currentView.userInteractionEnabled = YES;
    isEnabled = currentView.userInteractionEnabled;
}
isEnabled = self.someView.userInteractionEnabled;

在過程的每個步驟中,即使我將用戶交互設置為“是”,isEnabled變量也始終為“否”。

我在這里可能想念什么?

編輯:

從@rmaddy添加調試代碼以及​​一些額外的操作,我得到了:

UIView *view = self.someView;
while (view) {
    isEnabled = view.userInteractionEnabled;
    if (!view.userInteractionEnabled) {
        NSLog(@"view is not enabled: %@", view);
        view.userInteractionEnabled = YES;
    }
    view = view.superview;
}

當我逐步執行該操作時,isEnabled變量始終為NO,但是if(!view.userInteractionEnabled)邏輯永遠不會發生。 怎么都可以 關於Objective-C BOOL,我有不了解的地方嗎? 在調試器中,isEnabled的值如何為NO,而if(!view.userInteractionEnabled)條件從不適用?

現在很困惑。

嘗試從子視圖開始並向上走超級視圖鏈。

UIView *view = self.someView;
while (view) {
    if (!view.userInteractionEnabled) {
        NSLog(@"view is not enabled: %@", view);
        view.userInteractionEnabled = YES;
    }
    view = view.superview;
}

暫無
暫無

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

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