iPhoneでは、ナビゲーションバーのボタンタッチにもナビゲーションバーの下に拡張機能があることを知っていますが、ユーザーの操作を特定の制限に制限する必要があります。それはできますか?誰か助けてもらえますか?
2 に答える
0
タップ ジェスチャ レコグナイザーを実装し、コントローラーをデリゲートとして設定します。次に実装します。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// [touch locationInView] -> gives the point where the user touched
// If the touch point belongs to your frame then return YES
// else return NO
}
于 2013-03-14T09:02:22.947 に答える
0
背後に非表示のナビゲーション バー「エンジン」を使用してカスタム ナビゲーション バーを自分で実装し、必要なカスタム動作/ビジュアルを備えたカスタム ナビゲーション バーにボタンを配置できます。これは、ジェスチャー ロジック (パン) を実装してナビゲーション ページを切り替える場合にも役立ちます。
AppDelegate.h:
@property (strong, nonatomic) UINavigationController *navigationController;
AppDelegate.m:
YourMainViewController *yourmainViewController = [[YourMainViewController alloc] init];
_navigationController = [[UINavigationController alloc] yourmainViewController];
[_navigationController setNavigationBarHidden:TRUE];
[self.window setRootViewController:_navigationController];
[self.window makeKeyAndVisible];
YourMainViewController.m: Interface Builder を使用して、またはプログラムによって、カスタム ナビゲーション イメージと追加されたナビゲーション用のボタンを使用してビューを実装します。たとえば、プログラムでビューを作成します。
- (void)loadView {
...
UIImageView *tmp_mynavbar = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"CustomNavBG.png"]];
tmp_mynavbar.frame = CGRectMake(0, 0, 320, 44);
[self.view addSubview:tmp_mynavbar];
UIButton *tmp_addbutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
tmp_addbutton.frame = CGRectMake(260, 10, 40, 20);
[tmp_addbutton setTitle:@"Add" forState:UIControlStateNormal];
[tmp_addbutton setBackgroundImage:[UIImage imageNamed:@"CustomNavAddBtn.png"] forState:UIControlStateNormal];
[tmp_addbutton addTarget:self action:@selector(pressedbuttonAddItem:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:tmp_addbutton];
// create button with the required size, user interaction area (add image then add transparent button with different size, etc)
// also add a back button
...
}
次に、カスタム ナビゲーション ボタンの動作を実装します (追加/次へボタンと戻るボタン)
-(void) pressedbuttonAddItem:(id) sender {
AppDelegate *app = (AppDelegate*) [[UIApplication sharedApplication] delegate];
DetailViewController *detailViewController = [[DetailViewController alloc] init];
[[app navigationController] detailViewController animated:YES];
}
-(void) pressedbuttonBack:(id) sender {
AppDelegate *app = (AppDelegate*) [[UIApplication sharedApplication] delegate];
[[app navigationController] popViewControllerAnimated:YES];
}
于 2013-03-14T10:27:22.480 に答える