登錄後跳轉到自定義 RDVTabBarController,四個子控制器均勾選了 XIB,但 XIB 中設置背景色無效,代碼設置卻生效。
UIImageView 繼承自 UIView,默認 userInteractionEnabled = NO。 將 UITextField 作為子視圖添加到 UIImageView 上時,觸摸事件無法傳遞給 TextField,導致無法編輯。同理,XIB 中的背景色等屬性若依賴交互或布局引擎,也可能受影響。
// 在初始化或 viewDidLoad 中開啟交互
imageView.userInteractionEnabled = YES;
若 XIB 包含自定義類的控件,需:
loadNibNamed:owner:options: 加載並遍歷查找:NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
for (id obj in nib) {
if ([obj isKindOfClass:[MyCustomView class]]) {
self.myView = (MyCustomView *)obj;
break;
}
}
initWithNibName:bundle: 初始化,並在該方法中設置 title、圖標等屬性。XIB 背景色失效、TextField 無法編輯,本質都是 **UIView 默認不接收觸摸事件** 導致。一行 userInteractionEnabled = YES 即可解決,切記在容器視圖上設置,而非子視圖。