我想在不使用文本字段的情况下拉出键盘,所以我继承了UIToolbar并使其符合UIKeyInput协议。基于我使用简单NSLog打印输出的测试,我成功地读取了来自用户的键输入。我的问题是,我需要输入到键盘中的文本来更新表视图,该表视图由与我的自定义工具栏相同的视图控制器管理。基本上我的问题是:如果我的update方法在我的自定义工具栏类中,我如何告诉它更新表视图?或者,如果我的update方法在我的视图控制器类中,我如何确保它在每次按下一个键时都被调用?
我尝试让工具栏在按下某个键时发送通知,如下所示:
- (void)insertText:(NSString *)text {
[[NSNotificationCenter defaultCenter] postNotificationName:@"keyPressed" object:self];,然后用视图控制器监听它。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(updateForKeyPressed:) name:@"keyPressed" object:nil];..。
- (void)updateForKeyPressed:(NSNotification *)note {
[self update];
}这并不管用,但这并不奇怪,因为我是从一篇在线文章中得到这个想法的,而且我相当确定我做错了。在这一点上,我几乎是一团糟,如果有人能给我指出正确的方向,那就太好了。一如既往,任何帮助都是非常感谢的。如果任何人想看到更多我的代码,请让我知道,我可以把它张贴出来。
发布于 2012-03-07 09:54:36
使用通知应该可以很好地工作。你做了什么来调试你的代码?您确定正在发布通知吗?是否确定视图控制器已向通知中心注册?您确定-updateForKeyPressed:没有被调用吗?
委派是另一个更容易设置和调试的选项。让视图控制器将自身设置为工具栏的代理,并让工具栏在其文本更改时向其代理发送一条消息,就像UITextView所做的那样。
要记住的主要思想是,视图不应该关心视图控制器。工具栏可能会向视图控制器发送消息,因为视图控制器恰好是它的委托,但它不应该依赖于它的委托是视图控制器这一事实。
发布于 2012-03-07 09:55:37
您应该能够使视图控制器符合uikeyinput,然后将工具栏的委托设置为视图控制器
https://stackoverflow.com/questions/9594616
复制相似问题