UInavigationBarのleftBarButtonItemのクリック範囲が大きすぎるという問題を解決する
2519 ワード
最近かわいいテストMMが次の質問をしてくれて、ナビゲーションバーleftBarButtonItemがButtonをカスタマイズするとき、ボタンの実際のクリック範囲が大きすぎます.出力ボタンのframeは正常なサイズですが.そこでインターネットで調べて解決策を見つけて、記録しました.
**実はbuttonを同じサイズのviewに追加します
navigationBarのuserInteractionEnabledをNOに設定すればこのような問題は存在しないことに気づいたので、この問題を解決するカテゴリを構築することができます.
この方法をテストしたほうが頼りになる.インプリメンテーションコード現在アドレス
**実はbuttonを同じサイズのviewに追加します
UIImage *backImg = [UIImage imageNamed:imageName];
UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0.f, 0.f, backImg.size.width, backImg.size.height)];
[backBtn setImage:backImg forState:UIControlStateNormal];
UIView *backBtnView = [[UIView alloc] initWithFrame:backBtn.bounds];
backBtnView.bounds = CGRectOffset(backBtnView.bounds, 0, 0);
[backBtnView addSubview:backBtn];
UIBarButtonItem *backBarBtn = [[UIBarButtonItem alloc] initWithCustomView:backBtnView];
self.navigationItem.leftBarButtonItem = backBarBtn;
緊急更新さっきテストしたところ、上の方法が間欠的に機能していることがわかりました。そこで、もう一つの方法を見つけました。
navigationBarのuserInteractionEnabledをNOに設定すればこのような問題は存在しないことに気づいたので、この問題を解決するカテゴリを構築することができます.
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if ([self pointInside:point withEvent:event]) {
self.userInteractionEnabled = YES;
} else {
self.userInteractionEnabled = NO;
}
return [super hitTest:point withEvent:event];
}
この方法をテストしたほうが頼りになる.インプリメンテーションコード現在アドレス