Un cadru de gestionare a notificarilor sistemului de tastatura iOS modern, real, care functioneaza doar.

Dupa cum stiti, manipularea tastaturii pe iOS a fost doar un cosmar.

Pe internet, exista multe, multe implementari de manipulare a tastaturii iOS pentru notificari de sistem, cum ar fi UIResponder.keyboardWillChangeFrameNotification (UIKeyboardWillChangeFrameNotification), dar cele mai multe dintre ele nu sunt implementate corect.

De exemplu, multi dintre ei nu convertesc cadrul tastaturii in coordonata corecta sau nu iau in considerare comportamentele tastaturii iPad. De asemenea, exista multe comportamente nedocumentate care nu sunt consecvente intre fiecare versiune iOS.

Acest cadru rezolva aceasta problema.

Pe baza experientei de ani de zile in dezvoltarea aplicatiilor iOS si a diferitelor teste pe fiecare versiune si dispozitiv iOS, acesta accepta atat Swift, cat si Objective-C si functioneaza in mod rezonabil pe cele mai recente 3 versiuni de iOS, care sunt iOS 11, 12 si iOS 13 acum si acopera aproape toti utilizatorii iOS.

Utilizare

Utilizarea KeyboardGuide este foarte simpla. A se vedea, de asemenea, Exemple de utilizare reala, care contine cod Swift si Objective-C pentru testare.

Adaugati cadrul KeyboardGuide la proiectul dvs.

Adaugati urmatoarele linii in Package.swift sau utilizati meniul Xcode „Add Package Dependency …”.

// In dependentele dvs. `Package.swift`: [// … .package (url:” https://github.com/niw/KeyboardGuide.git “), // …]

Utilizarea KeyboardGuide cu alte instrumente de gestionare a dependentei.

KeyboardGuide nu accepta direct celelalte instrumente de gestionare a dependentei decat Swift Package Manager. Cu toate acestea, deoarece nu are alte dependente decat cadrele de sistem, il puteti folosi in continuare din celelalte instrumente de gestionare a dependentelor.

CocoaPods

Pentru a utiliza KeyboardGuide din CocoaPods, adaugati urmatorul fisier KeyboardGuide.podspec in proiect.

Pod :: Spec.new do | spec | spec.name = “KeyboardGuide” spec.version = “0.2.0” # Gasiti versiunea curenta din etichetele de versiune. spec.authors = “” spec.summary = “KeyboardGuide” spec.homepage = “https://github.com/niw/KeyboardGuide” spec.platform =: ios, “11.0” spec.source = {: git => ” https://github.com/niw/KeyboardGuide.

inazuma eleven xxx vecinasxxx
tetonas españolas follando sin querer
fire force hentai me follo a mi tia
necrofilia xxx www.maduras.con
orgasmos extremos pajas entre amigos
videos porno corridas incesto asiatico
casadas muy putas se le marca el coño
follando en el parque cartoon xxx
mi madre me folla hermanos rusos follando
sara rossi fakings follando en el parque
fiestas xxx maduras folladas por el culo
videos eroticos italianos abuelasputas
porno iberico folladas en el metro
peliculas eroticas gratis en español se folla a su compañero de piso
shakira follando pornolesvianas
abuelas y nietos xxx concursos nudistas
porno xxxxx videos eroticos italianos
orgias xxx casadas muy putas
coñitos violacion real porno
tetonas gratis videos gay xx

git “,: tag =>” # {spec.version} “} spec.source_files =” Sources / KeyboardGuide / *. swift “end

Apoi, actualizati Podfile in proiectul dvs.

pod ‘KeyboardGuide’,: podspec => ‘cale / catre / KeyboardGuide.podspec’

Cartagina

Pentru a utiliza KeyboardGuide din Carthage, actualizati Cartfile in proiectul dvs.

github “niw / KeyboardGuide”

Apoi, executati urmatoarele comenzi. Aceasta va crea Carthage / Build / iOS / KeyboardGuide.framework.

$ carthage update $ (cd Carthage / Checkouts / KeyboardGuide && pachet rapid generate-xcodeproj) $ carthage build –platform iOS

Urmati instructiunile pentru a adauga cadrul si rulati faza Script la proiect.

Configurare KeyboardGuide

Adaugati import KeyboardGuide.

Utilizati KeyboardGuide.shared.activate () pentru a activa KeyboardGuide la inceputul ciclului de viata al aplicatiei, cum ar fi aplicatia (_: didFinishLaunchingWithOptions :).

// In aplicatia functiei `UIApplicationDelegate` (_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {KeyboardGuide.shared.activate () // …}

Adaugati constrangeri asupra vizualizarilor dvs.

Dispuneti-va vizualizarile adaugand constrangeri la view.keyboardSafeArea.layoutGuide, unde reprezinta zona sigura, neacoperita de tastatura.

Functioneaza la fel ca safeAreaLayoutGuide pentru crestatura.

// In functia de „UIViewController` suprascrie func viewDidLoad () {super.viewDidLoad () // … let textView = UITextView () textView.translatesAutoresizingMaskIntoConstraints = false // … textView.bottomAnchor.constraint (equalTo: view.keyboardSafe .layoutGuide.bottomAnchor) .isActive = true // …}

Aspect manual

Daca preferati sa va expuneti manual vizualizarile sau trebuie sa utilizati lungimea zonei sigure de la tastatura, cum ar fi actualizarea UIScrollView’s contentInset, inlocuiti viewDidLayoutSubviews () sau layoutSubviews () ca la iesirea manuala obisnuita.

// In functia de „UIViewController` suprascrie func viewDidLayoutSubviews () {super.viewDidLayoutSubviews () // … lasa bottomInset = view.keyboardSafeArea.insets.bottom textView.contentInset.bottom = bottomInset textView.scrollIndicatorInsets}

Comportamentul important de aspect

Daca vizualizarea dvs. nu are sub vizualizari care au cel putin o constrangere pentru view.keyboardSafeArea.layoutGuide, UIKit NU POATE apela layoutSubviews (sau apeluri de apel similare, cum ar fi viewDidLayoutSubviews).

Deoarece, in general, zona de siguranta a tastaturii are o relatie relativa de aspect intre pozitia tastaturii in afara vizualizarii, dar in ecran, UIKit nu cunoaste aceasta relatie fara constrangere.

De exemplu, pe iOS 13, daca un controler de vizualizare este prezentat ca un mod pe iPad in portret, cand apare tastatura, controlerul de vizualizare modal este deplasat in sus de UIKit. Aceasta miscare modifica pozitia relativa de vedere la tastatura, cu toate acestea, UIKit nu suna layoutSubviews dvs. (care este evident,) , dar pentru tastatura zona sigura, ai POATE trebui sa re aseza vizualizarile sub.

Prin urmare, POATE trebuie sa adaugati cel putin o constrangere la view.keyboardSafeArea.layoutGuide de la unul din punctele de vedere sub dvs., pentru a permite UIKit stie vedere are aceasta relatie.

Limitari cunoscute

Exista cateva limitari cunoscute in implementarea curenta. Toate limitarile sunt in prezent sarcini pentru acest proiect.

  • Nu exista inca suport SwiftUI.

  • Extensia de partajare nu poate utiliza inca aceasta biblioteca din cauza dependentei de aplicatie UIA.