Я занимаюсь разработкой небольшого приложения и хочу реализовать функцию респондента при нажатии кнопки в представлении (ExtraView) внутри расширения клавиатуры. К сожалению, это было невозможно для меня из-за следующих ошибок, которые появляются, когда я нажимаю кнопку sh (приложения не аварийно завершают работу, но функция, реализованная для кнопки, не работает):
2020-01-31 03: 27: 36.724821 + 0100 MyApp [1841: 354840] [жизненный цикл] [u F8708363-74FE-4BA6-B64F-7DA7B719F80D: m (ноль)] [MyApp.Keyboard (1.0)] Подключение к плагину признан недействительным во время использования.
2020-01-31 03: 27: 37.797067 + 0100 MyApp [1841: 354676] viewServiceDidTerminateWithError :: Error Domain = _UIViewServiceInterfaceErrorDomain Code = 3 "(null)" UserInfo = {Message = Service Соединение прервано}
И код, который вызывает ошибку:
import UIKit
@available(iOSApplicationExtension 9.0, *)
class CatboardBanner: ExtraView {
var scrollView = UIScrollView()
var stack = UIStackView()
let button1 = UIButton()
required init(globalColors: GlobalColors.Type?, darkMode: Bool, solidColorMode: Bool) {
super.init(globalColors: globalColors, darkMode: darkMode, solidColorMode: solidColorMode)
self.backgroundColor = UIColor.white.withAlphaComponent(0.01)
self.addSubview(scrollView)
self.scrollView.translatesAutoresizingMaskIntoConstraints = false
self.scrollView.addSubview(self.stack)
self.stack.translatesAutoresizingMaskIntoConstraints = false
self.stack.axis = .horizontal
self.stack.spacing = 10
button1.setTitle("btn 1", for: .normal)
button1.backgroundColor = UIColor.lightGray
button1.roundedCorners(rounding: 5)
button1.translatesAutoresizingMaskIntoConstraints = false
button1.addTarget(button1, action:#selector(buttonClicked), for: .touchUpInside)
self.stack.addArrangedSubview(button1)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
self.scrollView.showsHorizontalScrollIndicator = false
self.scrollView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0).isActive = true;
self.scrollView.topAnchor.constraint(equalTo: self.topAnchor, constant: 0).isActive = true;
self.scrollView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0).isActive = true;
self.scrollView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0).isActive = true;
let topStack = NSLayoutConstraint(item: stack, attribute: .top, relatedBy: .equal, toItem: scrollView, attribute: .top, multiplier: 1, constant: 10)
let bottomStack = NSLayoutConstraint(item: stack, attribute: .bottom, relatedBy: .equal, toItem: scrollView, attribute: .bottom, multiplier: 1, constant: 0)
NSLayoutConstraint.activate([topStack,bottomStack])
self.stack.leadingAnchor.constraint(equalTo: self.scrollView.leadingAnchor).isActive = true
self.stack.trailingAnchor.constraint(equalTo: self.scrollView.trailingAnchor).isActive = true
let leadingConstraint = NSLayoutConstraint(item: button1, attribute: .leading, relatedBy: .equal, toItem: self.stack, attribute: .leading, multiplier: 1, constant: 10)
let widthConstraint = NSLayoutConstraint(item: button1, attribute: NSLayoutConstraint.Attribute.width, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 100)
NSLayoutConstraint.activate([leadingConstraint, widthConstraint])
}
@objc func buttonClicked() {
print("Button Clicked")
}
}