Ich verwende eine Symbolleiste in der Eigenschaft inputAccessoryView eines textView. Wenn die Tastatur angezeigt wird, wird die Symbolleiste wie erwartet angezeigt. Wenn das Gerät gedreht wird, möchte ich die Symbolleiste entfernen. Ich habe versucht:So blenden Sie inputAccessoryView aus, ohne die Tastatur zu verwerfen
myTextView.inputAccessoryView.hidden = !layoutIsPortrait;
Dies versteckt die Symbolleiste, aber hinterlässt den Umriss der höheren Tastatur. Die Tastatur ist anscheinend immer noch so groß, dass sie in die Symbolleiste passt. Es sieht schlecht aus und beeinträchtigt Berührungsereignisse der zugrunde liegenden Responder.
myTextView.inputAccessoryView = nil;
funktioniert nur, wenn ich ResignFirstResponder, dann wieder becomeFirstResponder. Das ist nicht akzeptabel. Ich verliere die Cursor-Platzierung und den Inhalt des TextView, Tastatur blinkt aus und zurück.
[myTextView.inputAccessoryView removefromSuperview];
Geht gar nichts. gespeichert ich einen Verweis auf die Symbolleiste in einem iVar und adressiert, dass stattdessen
[myIvarReference removeFromSuperview];
das funktioniert, aber wieder die größere Umriss der Tastatur ist schwach sichtbar. Diesmal stört es nicht die Berührungen anderer Ansichten. So, jetzt ist dies eine funktionierende Lösung, aber visuell inakzeptabel. Was kann ich sonst noch versuchen, die EingabeAccessoryView nach Belieben ein- und auszublenden?
Screenshot- die schwache Linie oberhalb der Tastatur ist Überbleibsel der entfernten Symbolleiste
Würde es Ihnen etwas ausmachen, einen Screenshot von dem zu veröffentlichen, was Sie mit "Umriss der höheren Tastatur" meinen? Ich habe das Gefühl, dass die Lösungen, die du erwähnt hast, funktionieren sollten (zumindest eine davon), aber ich bin mir nicht sicher, was für dich ästhetisch akzeptabel ist ... – geraldWilliam
Ich habe eine Nahaufnahme des Screenshots hinzugefügt –
Ich kann es nicht testen gerade jetzt aber tut myTextView.inputAccessoryView.frame = CGRectZero tun, was Sie suchen? – geraldWilliam