Цель: я создаю табель учета рабочего времени с помощью быстрого пользовательского интерфейса.
Вопрос: Вверху у меня класс А, который наследуется от UiViewController. Он размещает UiStackView в вертикальном стеке, чтобы разделить экран на три части: сверху, по центру и снизу. У меня проблемы с центральным видом. Я могу получить взаимодействие с UiTextField внутри центра, только если я добавлю его напрямую.
Внутри центрального представления у меня есть класс Б, который наследуется от UiView. Внутри класса у меня есть еще один UiStackView, который добавит горизонтальный стек для красивого расположения некоторых элементов.
Я создал класс С в том же файле за пределами класса центрального вида, и он наследуется от 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...
}
}
`
Любая помощь в этом будет высоко оценена. Это мое первое приложение Swift, поэтому я еще новичок. Пожалуйста, уточните, я прочитаю все (несколько раз). Спасибо !
я пытался сделать view.bringSubviewToFront(), но играю в кости. я не уверен, что из-за ограничений я теряю способность к взаимодействию.
я нашел ответ, который сделает все мои компоненты пользовательского интерфейса снова отзывчивыми, мне пришлось добавить uiStackView.translatesAutoresizingMaskIntoConstraints = true, если это убрать или установить на false, компоненты пользовательского интерфейса не будут отвечать.





я нашел ответ, который сделает все мои компоненты пользовательского интерфейса снова отзывчивыми, мне пришлось добавить uiStackView.translatesAutoresizingMaskIntoConstraints = true, если это убрать или установить на false, компоненты пользовательского интерфейса не будут отвечать.
view.bringSubviewToFront()может помочь, это только очень краткий просмотр. Попробуйте и посмотрите, работает ли это.