ich zur Zeit eine Arbeits UIToolbar
habe, wo ich zusätzliche Tasten oberhalb der Tastatur setzen werde, wenn ein UITextField
verwenden, aber ich will für über ein UITextView
einen zweiten UIToolbar
Typen machen. Als ich versuchte, meinen Code zu kopieren und ihn so zu modifizieren, dass er mir gefällt, wird er nicht angezeigt. Ich bin mir nicht sicher, ob ich etwas falsch mache oder ob es etwas mit den verwendeten NotificationCenter
und addObserver
zu tun hat. Zu Ihrer Information, die gesamte Klasse heißt AddRecipeDirectionVC: UIViewController, UITextViewDelegate
, wenn das überhaupt benötigt wird.eine zweite UIToolbar für Tastatur mit UITextViews verwendet Hinzufügen
So, hier ist der Beobachter Code Ich füge in meine viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
//...Other Code...
NotificationCenter.default.addObserver(self, selector: #selector(AddRecipeDirectionVC.keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
}
Ursprünglich dachte ich, ich auf jeden UIViewController
diesen Observer hinzufügen hatte, aber ich beginne diesen Code zu denken, ich bin Verwendung könnte nur in der ursprünglichen VC und es würde für den Rest des Projekts durchgeführt werden (derzeit verwende ich diesen Code in jeder VC, wo ich die Toolbar hinzufügen)
Als nächstes habe ich die textViewDidBeginEditing
Funktion, wo ich denke, dass die Tastatur-Symbolleiste hinzugefügt wird.
func textViewDidBeginEditing(_ textView: UITextView) {
if (textView.textColor == UIColor.lightGray) {
textView.text = nil
textView.textColor = UIColor.black
}
self.keyboardToolbar(textView: textView) //Adding Keyboard
}
Und dann endlich, ich habe keyboardWillShow
und keyboardToolbar
Funktionen
func keyboardWillShow(notification: Notification) {
let keyFrame = ((notification as NSNotification).userInfo![UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
let keyHeight = keyFrame.size.height
self.bottomSpace.constant = keyHeight + 12
}
func keyboardToolbar(textView: UITextView) {
let toolbar: UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 1, height: 1))
toolbar.barStyle = UIBarStyle.default
toolbar.bounds.size.height = 28
let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
let done: UIBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "Done Check"), style: UIBarButtonItemStyle.done, target: self, action: #selector(AddRecipeIngredientVC.doneButtonAction))
done.tintColor = UIColor.aqua(alpha: 1.0)
let clear: UIBarButtonItem = UIBarButtonItem(title: "Clear", style: UIBarButtonItemStyle.plain, target: self, action: #selector(AddRecipeDirectionVC.clearButtonAction))
clear.tintColor = UIColor.darkAqua(alpha: 1)
var items = [UIBarButtonItem]()
items.append(clear)
items.append(flexSpace)
items.append(done)
toolbar.items = items
toolbar.sizeToFit()
textView.inputAccessoryView = toolbar }
func doneButtonAction() {
self.directionText.resignFirstResponder()
self.bottomSpace.constant = 12
}
func clearButtonAction() {
directionText.text = ""
}
Soweit ich sagen kann, ich bin das alles tun gleiche wie in den anderen VCs, so scheint es, wie es sein sollte arbeiten, aber nichts taucht auf. Lassen Sie mich wissen, ob zusätzlicher Code hinzugefügt werden muss.
Sie in fortgeschrittenen Vielen Dank für jede mir jemand helfen :)