2013-05-02 42 views
0

没有与此方法通uigesturerecognzer数据来父控制器

- (void)revealGesture:(UIPanGestureRecognizer *)recognizer{ 
} 

,当我向它发送一个mesage弗罗马孩子的ViewController使用轻扫其工作的主视图控制器:

UIPanGestureRecognizer *navigationBarPanGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self.navigationController.parentViewController action:@selector(revealGesture:)]; 
[self.navigationController.navigationBar addGestureRecognizer:navigationBarPanGestureRecognizer]; 

我想从子viewController内部传递消息,以便我可以首先做一些管家工作

UIPanGestureRecognizer *navigationBarPanGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(revealGesture:)]; 
    [self.navigationController.navigationBar addGestureRecognizer:navigationBarPanGestureRecognizer]; 

- (void)revealGesture:(UIPanGestureRecognizer *)recognizer 
{ 
    [displaySearch resignFirstResponder]; 
    RevealController *revealController = [self.navigationController.parentViewController isKindOfClass:[RevealController class]] ? (RevealController *)self.navigationController.parentViewController : nil; 

    NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys: recognizer, @"recognizer", nil]; 

    [revealController performSelector:@selector(revealGesture:) withObject:data]; 
} 

是的,所有我想要做的是有一些代码工作正常在继续前取消键盘如果我只是针对“self.navigationController.parentViewController”直接

如何添加(UIPanGestureRecognizer *)识别器到NSDictionary?

-[__NSCFDictionary state]: unrecognized selector sent to instance 0x8619860 
2013-05-02 21:12:05.752 PwC UK[57884:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary state]: unrecognized selector sent to instance 0x8619860' 

编辑建议的解决方案我的代码崩溃的工作,但键盘没反应,到行恰克到

[self searchBarCancelButtonClicked:searchBar]; 

其中搜索栏是的UISearchBar

实例

回答

0

它需要看起来像revealGesture期待一个UIPanGestureRecognizer作为它的参数,但你传递一个NSDictionary。尝试直接传递手势识别器。

[revealController performSelector:@selector(revealGesture:) withObject: recognizer]; 
+0

非常明显 - 出于某种原因,我认为withObject必须是nsdictionary – JulianB 2013-05-02 20:59:01