0

私は本のアプリに取り組んできましたが、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];
4

1 に答える 1

0

ツールバーをメイン ビューのサブビューとして追加し、ジェスチャ レコグナイザーをメイン ビューに追加しました。

そのため、ツールバーに触れるとすぐに、タッチは最初にメイン ビューに移動し、ツールバー項目に渡される前にジェスチャ レコグナイザーによってインターセプトされます。

私がお勧めするのは、現在のビュー内にあるコンテンツ (別のサブビュー?) にジェスチャ レコグナイザーを設定することです。そうすれば、ツールバーのタッチはツールバーにルーティングされ、ビュー内のタッチは (コンテンツ) サブビューに送られ、ジェスチャ レコグナイザーによってキャッチされます。

理にかなっていますか?

于 2013-08-03T01:40:40.117 に答える