1

私は画像UIBUttonのように持ってUICollectionViewCellいます。私はxibでtouchUpInside Actionを設定しました。ボタンの背景画像をピンクに設定し、ラベルを黄色にしました。UIButtonラベルの上部に来ます。問題はUIButton、ピンク色の領域でタッチ イベントを取得しない場合、オレンジ色の領域でのみタッチ イベントを取得することです。なぜそうなのか。

- (IBAction)checkButtonTap:(id)sender event:(id)event
{
    DLog(@"%s",__func__);
}

ここに画像の説明を入力


O 非表示のビューがボタンに重なっているため、タッチ イベントがボタンに到達していません。

4

3 に答える 3

1

あなたの問題を理解していることを確認するために、あなたUICollectionViewは黄色とUIbuttonピンクを持っていますよね?

もしそうなら、黄色のボタンのスーパービューの外にある touchUpInside イベントをインターセプトしたいようです。ある種の問題を扱うこの回答を見ることができます。

最終的に問題の解決策を見つけたとしても、私の答えを明確にするために、スーパービューのフレーム内にない とやり取りしたい場合は、スーパービューUIButtonのメソッドを実装する必要があるかもしれません- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event(ここではUICollectionViewCell):

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.clipsToBounds && !self.hidden && self.alpha > 0) {
    for (UIView *subview in self.subviews.reverseObjectEnumerator) {
        CGPoint subPoint = [subview convertPoint:point fromView:self];
        UIView *result = [subview hitTest:subPoint withEvent:event];
        if (result != nil) {
            return result;
        }
    }
}

return nil;
}

(ノームさんありがとう!)

于 2014-12-29T09:11:04.020 に答える
0

申し訳ありませんが、タッチ イベントがボタンに到達していないために、ボタンに重なっている非表示のビューがありました。

于 2014-12-29T10:50:45.887 に答える