![](/img/trans.png)
[英]How do I set width of custom subview to be 1/3rd of parent UIView which does not have width constraint?
[英]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.