Я бы хотел обновить UIKeyboardAppearance
в ViewController
. Под этим я имею в виду, скажем, VC загружается с UIKeyboardAppearance.default
. Если я нажму кнопку, я бы хотел, чтобы клавиатура обновилась до .dark
, и теперь клавиатура отображается в том же VC, что и .dark
.
Насколько я могу судить, iOS проверяет значение UIKeyboardAppearance
при загрузке VC и не проверяет снова, пока не загрузит VC снова. Даже если вы измените значение UIKeyboardAppearance
и скроете / покажите клавиатуру.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// creating a simple text box, and making the placeholder text the value of the keyboardAppearance
myTextBox.backgroundColor = UIColor.lightGray
myTextBox.frame = CGRect(x: 30, y: 200, width: 300, height: 50)
view.addSubview(myTextBox)
UITextField.appearance().keyboardAppearance = .dark
myTextBox.becomeFirstResponder()
myTextBox.placeholder = "Keybaoard Appearance is: \(UITextField.appearance().keyboardAppearance.rawValue)"
// a simple button to toggle the keyboardAppearance
toggleButton.frame = CGRect(x: 30, y: 300, width: 300, height: 50)
toggleButton.setTitle("Toggle Keyboard", for: .normal)
toggleButton.backgroundColor = UIColor.red
toggleButton.addTarget(self, action: #selector(toggleButtonFunction), for: .touchUpInside)
view.addSubview(toggleButton)
}
// toggles the keyboardAppearance. Hides the keyboard, and a second later shows it again.
@objc func toggleButtonFunction() {
if UITextField.appearance().keyboardAppearance == .dark {
UITextField.appearance().keyboardAppearance = .default
}
else {
UITextField.appearance().keyboardAppearance = .dark
}
myTextBox.resignFirstResponder()
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
self.myTextBox.becomeFirstResponder()
self.myTextBox.placeholder = "Keybaoard Appearance is: \(UITextField.appearance().keyboardAppearance.rawValue)"
})
}
let myTextBox = UITextField()
let toggleButton = UIButton()
}
Я надеялся, что после изменения UIKeyboardAppearance
и скрытия / показа клавиатуры он будет отображаться с новым внешним видом (.dark
или .default
), но он будет постоянно отображаться с тем же внешним видом, пока VC не будет загружен снова , Вы можете увидеть значение UIKeyboardAppearance
изменений, но iOS, похоже, не проверяет это обновление, пока VC не загрузится снова.
Есть ли способ вызвать перепроверку в ВК?
Спасибо за вашу помощь!