2

UIButtonのタイプのをビューに追加しましたがUIButtonTypeInfoDark、そのタッチ領域は巨大です。Apple が 44px を推奨していることは知っていますが、この場合はかなり大きくなります。ビューの明るい灰色の背景を設定して、44px の終了領域がどこにあるかを確認します。明るい灰色のビュー領域の外側に触れても、infoTapped:イベントを受け取ることができます。

誰でも理由を明確にできますか?ありがとう!

_infoButton = [UIButton buttonWithType:UIButtonTypeInfoDark];
[_infoButton setShowsTouchWhenHighlighted:NO];
[_infoButton setFrame:CGRectMake(frame.size.width-44, 0, 44, 25)];
[_infoButton setBackgroundColor:[UIColor lightGrayColor]];
[_infoButton addTarget:self action:@selector(infoTapped:) forControlEvents:UIControlEventTouchUpInside];
4

2 に答える 2

0

これを修正するには、おそらくサブクラス化が必要です。厳密にボタンの境界内にない限り、サブクラスでオーバーライドpointInside:withEvent:して返すことができます。UIButtonNO

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    return CGRectContainsPoint(self.bounds, point);
}

Apple コントロールはYES、コントロールを指で触れやすくするために、境界外のクエリに戻ることがあります。

于 2013-04-30T14:27:20.883 に答える