Я оставил свой UITextView ограниченным основанием safeAreaLayoutGuide, но я добавил CGFloat для представления отступа внизу экрана.По умолчанию он был равен 0, но если iOS 11 была доступна (для учета iPhone X и его нижнего отступа), я установил для CGFloat значение UIApplication.shared.keyWindow! .SafeAreaInsets.bottom.Затем, когда я переместил UITextView вверх или вниз в соответствии с UIKeyboard, я вычел размер CGFloat.
//Global var
var safeAreaBottom: CGFloat = 0.0
// Verify screen bottom in viewDidLoad
if #available(iOS 11, *) {
safeAreaBottom = UIApplication.shared.keyWindow!.safeAreaInsets.bottom
}
// Push views up if keyboard is showing, otherwise set constant back to 0. Subtract safeAreaBottom if iOS 11 is available to compensate for the bottom padding
textViewBottomAnchorToSafeArea?.constant = isKeyboardShowing ? -((keyboardFrame?.height)! - safeAreaBottom) : 0