2015-10-05 92 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