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เกี่ยวกับการตอบสนองแรก/UITextFieldUITextView
ขั้นที่ 4: -ย้ายtopMostViewController.view.frameขึ้น / ลงตามระยะทางที่ย้ายคาดว่า
ขั้นที่ 5: -หากพบว่าUIKeyboardWillHideNotification, UITextFieldTextDidEndEditingNotificationหรือUITextViewTextDidEndEditingNotificationการแจ้งเตือนแล้วลองอีกครั้งที่จะได้รับtopMostViewControllerตัวอย่างจากUIWindow.rootViewControllerลำดับชั้น
ขั้นตอนที่ 6: -ระยะทางที่ถูกรบกวนจากการคำนวณtopMostViewController.viewซึ่งจำเป็นต้องได้รับการกู้คืนสู่ตำแหน่งเดิม
ขั้นตอนที่ 7: -กู้คืนtopMostViewController.view.frameตามระยะที่ถูกรบกวน
ขั้นตอนที่ 8: -อินสแตนซ์คลาสเดี่ยวIQKeyboardManager ที่สร้างอินสแตนซ์ในการโหลดแอปดังนั้นทุกUITextField/ UITextViewในแอปจะปรับโดยอัตโนมัติตามระยะการเคลื่อนที่ที่คาดไว้
นั่นคือทั้งหมด