IQKeyboardManagerทำสิ่งนี้ให้คุณโดยไม่ต้องใช้รหัสเพียงแค่ลากและวางไฟล์ต้นฉบับที่เกี่ยวข้องไปยังโครงการ IQKeyboardManagerยังรองรับDevice Orientation , Automatic UIToolbar Management , keyboardDistanceFromTextFieldและอีกมากมายกว่าที่คุณคิด
นี่คือแผนภูมิการควบคุม:
ขั้นที่ 1: -เพิ่มการแจ้งเตือนทั่วโลกของUITextField
, UITextView
และUIKeyboard
ในชั้นเรียนเดี่ยว ผมเรียกมันว่าIQKeyboardManager
ขั้นที่ 2: -หากพบว่าUIKeyboardWillShowNotification
, UITextFieldTextDidBeginEditingNotification
หรือUITextViewTextDidBeginEditingNotification
การแจ้งเตือนแล้วพยายามที่จะได้รับtopMostViewController
ตัวอย่างจากUIWindow.rootViewController
ลำดับชั้น เพื่อให้ถูกต้องเปิดเผยUITextField
/ UITextView
มันtopMostViewController.view
's กรอบจะต้องปรับ
ขั้นที่ 3: -การคำนวณระยะทางย้ายที่คาดว่าจะtopMostViewController.view
เกี่ยวกับการตอบสนองแรก/UITextField
UITextView
ขั้นที่ 4: -ย้ายtopMostViewController.view.frame
ขึ้น / ลงตามระยะทางที่ย้ายคาดว่า
ขั้นที่ 5: -หากพบว่าUIKeyboardWillHideNotification
, UITextFieldTextDidEndEditingNotification
หรือUITextViewTextDidEndEditingNotification
การแจ้งเตือนแล้วลองอีกครั้งที่จะได้รับtopMostViewController
ตัวอย่างจากUIWindow.rootViewController
ลำดับชั้น
ขั้นตอนที่ 6: -ระยะทางที่ถูกรบกวนจากการคำนวณtopMostViewController.view
ซึ่งจำเป็นต้องได้รับการกู้คืนสู่ตำแหน่งเดิม
ขั้นตอนที่ 7: -กู้คืนtopMostViewController.view.frame
ตามระยะที่ถูกรบกวน
ขั้นตอนที่ 8: -อินสแตนซ์คลาสเดี่ยวIQKeyboardManager ที่สร้างอินสแตนซ์ในการโหลดแอปดังนั้นทุกUITextField
/ UITextView
ในแอปจะปรับโดยอัตโนมัติตามระยะการเคลื่อนที่ที่คาดไว้
นั่นคือทั้งหมด