Ich habe eine sehr kleine Frage - können wir die Tastaturhöhe ohne Verwendung der Benachrichtigung berechnen. Alle Antworten im Spielüberlauf verwenden NSNotification, aber gibt es eine einfachere Möglichkeit, es zu berechnen?Berechnen der Tastaturhöhe ohne Verwendung von NSNotification in swift
unten ist der Code:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil
@objc func keyboardWillShow(notification: ) {
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
let kbHeight = keyboardSize.height
}
}
}
-Code Tastaturhöhe in textFieldDidBeginEditing zu verwenden:
var kbHeight: CGFloat?
@objc func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
kbHeight = keyboardSize.height
}
}
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField.frame.maxY > self.kbHeight!
{
self.scrollView.setContentOffset(CGPoint.init(x: 0, y: textField.frame.maxY - (self.kbHeight! + 2.0)), animated: true)
}
else{
return
}
print(textField.frame.maxY)
print(self.view.frame.height * 0.6)
print(textField.frame.maxY - self.view.frame.height * 0.6)
}
func textFieldDidEndEditing(_ textField: UITextField)
{
self.scrollView.setContentOffset(CGPoint.init(x: 0, y: 0), animated: true)
self.view.endEditing(true);
}
Warum Sie nicht verwenden möchten NotificationCenter? –
Hallo Rajesh, ich möchte die Tastaturhöhe Variable in TextFieldDidBeginEditing verwenden und möchte daher wissen, ob ich Höhe ohne Benachrichtigung erhalten kann. Ich habe versucht, die Logik mit Hilfe der Benachrichtigung für die Berechnung der Höhe und dann verwenden Sie es in TextFeidDidBeginEditing, aber kein Glück Ich habe meine oben für Ihre Referenz eingefügt, würde jede Hilfe geschätzt werden –
Der Grund, warum wir die Mitteilungszentrale verwenden, ist die Tastatur Höhe ändert sich entsprechend Tastaturtyp, der für Textfeld, TextView usw. zur Verfügung gestellt wird. Daher gibt es die Größe der Tastatur entsprechend. –