UiStackView中的UiTextField没有响应

时间:2019-07-20 05:00:13

标签: ios swift uiview uistackview

目标:我正在使用swift ui建立时间表。

问题:在顶部,我有一个类 A ,该类继承自UiViewController。它在垂直堆栈中布置了一个UiStackView,将屏幕分为三个:顶部,中间,底部。我在中心视图内遇到问题。如果直接添加,则只能与中心内的UiTextField进行交互。

在中心视图中,我有一个继承自UiView的类 B 。在该类中,我有另一个UiStackView,它将添加一个水平堆栈以很好地布局某些项目。

我在中心视图类之外的同一文件中创建了一个类 C ,该类继承自UiView。它包含我设置并添加的UiTextField。

这是很奇怪的地方,我可以在B类内部做,并且可以使用UiTextField了:

`let temp = ClassC (inherits UiView)
self.addSubView(temp)` <- works

`ClassBUiStackView.addSubView(ClassC)
UiView temp = UiView(...)
temp.addSubView(ClassBUiStackView)
self.addSubView(temp)` <- fails

让我提供一些实际的代码:

`class A: UiViewController{
 override func viewDidLoad(){
  super.viewDidLoad()
  self.top = ...
  self.cnr = Class B
  self.btm = ...
  self.ClassAUiStackView(arrangedSubviews: [top,cnr,btm])
  ...constraints...
  self.view.addSubview(ClassAUiStackView)
 }
}
class B: UiView{
 override init(...){
  super.init(...)
  self.ClassBUiStackView(...x,y,width,heigh...)
  ...constraints...
  let temp = UiView(...)
  self.ClassBUiStackView.addSubView(ClassC)
  temp.addSubView(ClassBUiStackView)
 }
}
class C: UiView{
 var UiTF: UiTextField!
 required init(..., classB, ...){
  ...setup UiTf...
  self.UiTF.addTarget(self, action: #selector(uitfAction), for: .allEvents)
 self.addSubView(UiTf)
 }
 @objc func uitfAction(senderL UITextField!){
  ...some action...
 }
}
`

Deep Nesting UiView

UiView example #01

UiView example #02

UiView example #03

在此方面的任何帮助将不胜感激。这是我的第一个Swift应用程序,所以我还是一个新手。请详细说明,我将全部阅读(多次)。谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了使我的所有ui组件再次响应的答案,我不得不添加const arr: Qwe[] = [[E.A, E.B], [E.B, E.A]]; // okay const bad: Qwe[] = [[E.A, E.A]]; // error ,如果该值被删除或设置为false,则ui组件不会响应。