我有一个应用程序崩溃,当我尝试处理键盘通知。我使用的是xCode 6.0,该项目在Swift中。键盘通知导致EXC_BAD_ACCESS崩溃
试图隔离问题我创建了一个新应用程序,其中只包含一个UITextView
和4个约束,将视图固定到顶部,左侧和右侧边缘并设置固定高度。
所有我ViewController
具有如下:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.observeKeyboard()
}
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter().removeObserver(self)
}
func observeKeyboard() {
NSNotificationCenter.defaultCenter().addObserver(self, selector:Selector(keyboardWillAppear()), name:UIKeyboardWillChangeFrameNotification, object:nil)
}
func keyboardWillAppear() {
println("keyboardWillAppear")
}
}
当我启动在模拟器中的应用,
keyboardWillAppear
被打印到控制台,当我点击文本视图里面,该应用程序崩溃:
EXC_BAD_ACCESS code=1:
错误:memory read failed for 0x0
显示键盘,但另一个keyBoardWillAppear
未打印到控制台。
这个应用程序中没有别的东西,只是上面的代码和4个约束。我刚刚打开了一个全新的项目,试图隔离我在其他应用程序中遇到的问题。我也尝试订阅viewDidAppear
中的通知,并且我还尝试了另一个通知UIKeyboardWillShowNotification
和UIKeyboardDidShowNotification
,但结果始终相同。
我错过了什么?感谢您的帮助!
请你分享你试过的样品项目吗? – 2014-10-22 05:30:56
你的第一个问题是UIKeyboardWillChangeFrameNotification应该是UIKeyboardWillShowNotification。 – DBoyer 2014-10-22 05:38:27
谢谢Anil和@DBoyer。我尝试了两个通知(甚至还有一些键盘相关的通知)。但我的实际问题是'addObserver'中选择器的错误用法。它接受一个参数,所以应该是选择器:“keyboardWillAppear:”而不是我在问题中使用的。 – Olga 2014-10-22 23:47:24