我有这种方法可以在键盘出现时移动我的文本字段:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
- (void)keyboardWillShow:(NSNotification *)notification {
self.scrollView.contentOffset = CGPointMake(0.0f, keyboardShift);
}
然后我尝试使用块方法:
[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillShowNotification object:nil queue:nil usingBlock:^(NSNotification *note) {
self.scrollView.contentOffset = CGPointMake(0.0f, keyboardShift);
}];
但是,使用这种方法我在块中设置了一个断点,但它没有被调用。我有什么遗失的吗?为什么这种方法不起作用,而另一种方法呢?
答案 0 :(得分:0)
如果尝试用[NSOperationQueue mainQueue]
替换队列的nil参数怎么办?此外,如果您使用块API,请确保保留对返回的令牌的引用,以便您可以在以后的适当时间删除观察者。
答案 1 :(得分:0)
addObserverForName
返回一个你应该坚持的对象。从标题:
返回值由系统保留,并且应由调用者保留,以便使用removeObserver删除观察者:稍后,停止观察。
请参阅documentation中的示例。