2016-09-08 3 views
2

enter image description here Мне нужно переместить UITextView с клавиатуры, когда требуется какой-то ввод. Я использую следующий код, и он отлично работает с UITextField, но совсем не с UITextView.Как переместить UITextView, когда клавиатура закрывает его

override func viewDidLoad() { 
    super.viewDidLoad() 

    NSNotificationCenter.defaultCenter().addObserver(self, 
                selector: #selector(DailyNotesViewController.keyboardWillShow(_:)), 
                name: UIKeyboardWillShowNotification, 
                object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, 
                selector: #selector(DailyNotesViewController.keyboardWillHide(_:)), 
                name: UIKeyboardWillHideNotification, 
                object: nil) 
} 

deinit { 
    NSNotificationCenter.defaultCenter().removeObserver(self) 
} 

func adjustInsetForKeyboardShow(show: Bool, notification: NSNotification) { 
    let userInfo = notification.userInfo ?? [:] 
    let keyboardFrame = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue() 
    let adjustmentHeight = (CGRectGetHeight(keyboardFrame) + 20) * (show ? 1 : -1) 
    scrollView.contentInset.bottom += adjustmentHeight 
    scrollView.scrollIndicatorInsets.bottom += adjustmentHeight 
} 

func keyboardWillShow(notification: NSNotification) { 
    adjustInsetForKeyboardShow(true, notification: notification) 
} 

func keyboardWillHide(notification: NSNotification) { 
    adjustInsetForKeyboardShow(false, notification: notification) 
} 

Просьба сообщить, что мне не хватает?

+0

Под «отлично работает с UITextField, но не с помощью UITextView», что вы имеете в виду, что «отлично работает» и что происходит с текстовым просмотром, что означает, что он не работает ... что с ним происходит? ? – Scriptable

+0

UITextfield перемещается вверх, поэтому клавиатура не покрывается или не скрывается, но UITextView не перемещается и закрывается клавиатурой. – Wayne

+0

Не могли бы вы снять скриншот макета экрана с клавиатурой и без нее. если представление движется вверх и все остальное с ним, но текстовое изображение не является, это похоже на его вероятную проблему с позиционированием/ограничениями textview. Как текстовое соединение связано с иерархией представлений? – Scriptable

ответ

0

Реальное решение оказалось очень простым.

В UITextView установите для параметра scrollingEnabled значение False.

Спасибо за помощь.

-1

сначала установить эту фракцию

var animatedDistance: CGFloat = 0.0 
let KEYBOARD_ANIMATION_DURATION: CGFloat = 0.3 
let MINIMUM_SCROLL_FRACTION: CGFloat = 0.2 
let MAXIMUM_SCROLL_FRACTION: CGFloat = 0.8 
let PORTRAIT_KEYBOARD_HEIGHT: CGFloat = 120 
let LANDSCAPE_KEYBOARD_HEIGHT: CGFloat = 140 

После звонка textviewdelegate

func textViewDidBeginEditing(textView: UITextView) { 
var textFieldRect = self.view.window.convertRect(textView.bounds, fromView: textView) 
var viewRect = self.view.window.convertRect(self.view.bounds, fromView: self.view) 
var midline: CGFloat = textFieldRect.origin.y + 0.5 * textFieldRect.size.height 
var numerator: CGFloat = midline - viewRect.origin.y - MINIMUM_SCROLL_FRACTION * viewRect.size.height 
var denominator: CGFloat = (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION) * viewRect.size.height 
var heightFraction: CGFloat = numerator/denominator 
if heightFraction < 0.0 { 
    heightFraction = 0.0 
} 
else if heightFraction > 1.0 { 
    heightFraction = 1.0 
} 

var orientation = UIApplication.sharedApplication().statusBarOrientation 
if orientation == .Portrait || orientation == .PortraitUpsideDown { 
    animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction) 

его прекрасно работали на моем конце, пожалуйста, проверьте. это может быть полезно для вас.

+0

Спасибо, я попробую и дам вам знать – Wayne

+0

Не используйте это. Ни одно из этих чисел не должно быть жестко запрограммировано. Все они могут быть получены должным образом во время выполнения из соответствующих событий клавиатуры. – rmaddy

Смежные вопросы