2015-10-05 94 views
1

我有一個奇怪的問題,移動我的意見,爲傳入的鍵盤騰出空間。基本上,在我的應用程序中,有一個執行segue的按鈕,該按鈕以模態方式嵌入導航控制器內部的視圖控制器的新實例。在第一個例子中,我的鍵盤代碼完美地工作。的代碼如下:(Swift)移動視圖的方式鍵盤?

func keyboardWillShow(sender: NSNotification) { 
    if !keyBoard { 
     self.view.frame.origin.y -= 200 
    } 
    keyBoard = true 
} 

func keyboardWillHide(sender: NSNotification) { 
    if keyBoard { 
     self.view.frame.origin.y += 200 
    } 
    keyBoard = false 
} 

在viewDidLoad中執行以下操作:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil) 
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil) 

我還添加了tapGestureRecognizer使得當鍵盤是表示與用戶的任意位置點擊屏幕上,鍵盤關閉:

let tapped = UITapGestureRecognizer(target: self, action: "closeKeyboard") 
tapped.numberOfTapsRequired = 1 
self.view.addGestureRecognizer(tapped) 

func closeKeyboard() { 
    self.view.endEditing(true) 
} 

所以在第一個例子中,這段代碼完美地工作。然而,在我回去之後,調用self.dismissViewControllerAnimated,並且,一旦我在原始屏幕上,再次單擊調用performSegue的按鈕並推送同一視圖控制器的新實例,代碼就會中斷並且視圖不再移出鍵盤的方式,但只是一些口吃和反彈一點點。我不知道爲什麼會發生這種情況,任何幫助將非常感激。謝謝!

回答

0

嘗試在keyboardWillShowkeyboardWillHide上放置斷點,並告訴我是否在返回到第二個ViewController時調用了這兩個方法。

+0

是的方法被調用。他們似乎不再以同樣的方式工作 – Jared