Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UiStackView中的UiTextField没有响应_Ios_Swift_Uiview_Uistackview - Fatal编程技术网

Ios UiStackView中的UiTextField没有响应

Ios UiStackView中的UiTextField没有响应,ios,swift,uiview,uistackview,Ios,Swift,Uiview,Uistackview,目标:我正在使用swift ui构建时间表 问题:在顶部,我有一个继承自UiViewController的类A。它在垂直堆栈中布局视图,将屏幕分为三个部分:顶部、中心和底部。我在中心视图中遇到问题。如果直接添加UiTextField,则只能与中心内的UiTextField进行交互 在中心视图中,我有一个继承自UiView的类B。在这个类中,我有另一个UiStackView,它将添加一个水平堆栈,以很好地布局一些项目 我在中心视图类之外的同一个文件中创建了一个类C,它继承自UiView。它包含我设

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

问题:在顶部,我有一个继承自UiViewController的类A。它在垂直堆栈中布局视图,将屏幕分为三个部分:顶部、中心和底部。我在中心视图中遇到问题。如果直接添加UiTextField,则只能与中心内的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


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

我找到了让我的所有ui组件再次响应的答案,我必须添加
uiStackView.translatesAutoresizingMaskIntoConstraints=true
,如果删除或设置为false,ui组件不会响应

view.bringSubviewToFront()
可能会有所帮助,只需简单浏览一下即可。试试看这是否有效。我试过使用view.bringSubviewToFront()但使用骰子。我不确定是不是因为限制因素,我失去了交互能力。我找到了一个答案,可以让我的所有ui组件再次响应,我不得不添加
uiStackView.translatesAutoResistinggmaskintoConstraints=true
,如果这个值被去掉或设置为false,ui组件不会响应。
`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...
 }
}
`