在toolbaritem中的困境

时间:2013-08-03 00:42:29

标签: objective-c cocoa-touch uitoolbar

我一直在研究我的书籍应用程序,但我有一个UIBarButtonItem困境。我已在工具栏上设置了3个条形按钮,如下图所示。它们工作正常,直到我设置单击识别器,代码中的最后2行。我想要做的是通过一次点击离开这个模态屏幕,而不是双击,而不是通过在工具栏上添加另一个“取消”按钮。设置单击识别器后,没有任何条形按钮项工作。 我怎样才能摆脱这种困境。任何人都能告诉我如何解决这个问题吗?谢谢你的时间。

UIToolbar* toolbar = [[UIToolbar alloc] init];
toolbar.barStyle = UIBarStyleDefault;
[toolbar sizeToFit];
toolbar.frame = CGRectMake(0, 410, 320, 50);
toolbar.tintColor = _label.backgroundColor;

self.title = @"Test For Toolbar";
UIBarButtonItem* TofC = [[UIBarButtonItem alloc] initWithTitle:@"T of C"
                                                        style:UIBarButtonItemStyleBordered
                                                        target:self
                                                        action:@selector(showTofC)];


UIBarButtonItem* bookMark = 
    [[UIBarButtonItem alloc] initWithTitle:@"Book Mark"style:UIBarButtonItemStyleBordered
                                                      target:self
                                                      action:@selector(bookMarkIt)];


UIBarButtonItem* searchBtn = [[UIBarButtonItem alloc] initWithTitle:@"Search"
                                                      style:UIBarButtonItemStyleBordered
                                                      target:self
                                                      action:@selector(searchIt)];


UIBarButtonItem* spacer = [[UIBarButtonItem alloc]      
                  initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                       target:self
                                        action:nil];





NSArray* buttons = 
           [NSArray arrayWithObjects:TofC, spacer, bookMark, spacer, searchBtn, nil];


self.navigationController.toolbarHidden = NO;


[toolbar setItems:buttons animated:NO];
[self.view addSubview:toolbar];

/*
// Single Tap
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc]
                                      initWithTarget:self
                                      action:@selector(handleTapGesture:)];
[self.view addGestureRecognizer:tapGesture];

*/ 

// Single Tap
Dum2ViewController* dum2ViewController = [[Dum2ViewController alloc] init];
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc]
                                      initWithTarget:dum2ViewController
                                      action:@selector(handleTapGesture:)];
[dum2ViewController.view addGestureRecognizer:tapGesture];

1 个答案:

答案 0 :(得分:0)

您已将工具栏添加为主视图的子视图,然后将手势识别器附加到主视图。

因此,只要您触摸工具栏,触摸就会首先进入主视图并截获手势识别器,然后才能将其传递到工具栏项目。

我建议做的是在当前视图中的任何内容(另一个子视图?)上设置手势识别器。这样,工具栏中的触摸将被路由到工具栏,并且视图内的触摸将转到(内容)子视图并被手势识别器捕获。

有道理吗?