亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅在鍵盤覆蓋輸入字段時才向上移動視圖

僅在鍵盤覆蓋輸入字段時才向上移動視圖

iOS
MMTTMM 2019-11-05 15:23:53
我正在嘗試為iPhone建立輸入屏幕。屏幕上有許多輸入字段。它們大多數位于屏幕頂部,但兩個字段位于底部。當用戶嘗試在屏幕底部編輯文本時,鍵盤將彈出并覆蓋屏幕。我找到了一種在發生這種情況時將屏幕向上移動的簡單解決方案,但是結果是屏幕始終向上移動,并且當用戶嘗試編輯屏幕時,屏幕頂部的字段超出了范圍。有沒有辦法讓屏幕只有當底部字段編輯動?我使用了在這里找到的這段代碼:override func viewDidLoad() {    super.viewDidLoad()            NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)}func keyboardWillShow(sender: NSNotification) {    self.view.frame.origin.y -= 150}func keyboardWillHide(sender: NSNotification) {    self.view.frame.origin.y += 150}
查看完整描述

3 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

我發現最適合我的一個是:


func textFieldDidBeginEditing(textField: UITextField) {

    if textField == email || textField == password {

        animateViewMoving(true, moveValue: 100)

    }

}


func textFieldDidEndEditing(textField: UITextField) {

    if textField == email || textField == password {

        animateViewMoving(false, moveValue: 100)

    }

}


func animateViewMoving (up:Bool, moveValue :CGFloat){

    let movementDuration:NSTimeInterval = 0.3

    let movement:CGFloat = ( up ? -moveValue : moveValue)


    UIView.beginAnimations("animateView", context: nil)

    UIView.setAnimationBeginsFromCurrentState(true)

    UIView.setAnimationDuration(movementDuration)


    self.view.frame = CGRectOffset(self.view.frame, 0, movement)

    UIView.commitAnimations()

}

您還可以更改高度值。如果要對所有文本字段使用“ if語句”,請刪除它。


您甚至可以將其用于所有需要用戶輸入的控件,例如TextView。


查看完整回答
反對 回復 2019-11-05
  • 3 回答
  • 0 關注
  • 457 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號