iOS:「調光器」ビューのアルファを0.0以上に設定すると、タッチイベントが無効になります(?)

StackOverflow https://stackoverflow.com/questions/4371054

質問

私は、ユーザーがジェスチャーによってディスプレイを暗くすることを許可しようとしているアプリを持っています。他の多くのビューとボタンを含むuiviewがあり、その上に、背景色が黒に設定したuiviewを配置します。調光を持たないように、その調光器ビューのアルファをゼロ(透明)に設定します。調光のために、私は小さなステップでアルファ値を増やします。アルファ値がゼロより大きくなると、タッチイベントがブロックされていない場合、それは...(あなたがそれが来ていることを知っていた)を除いてうまく機能しているように見えます。

調光器ビューの作成:

UIPanGestureRecognizer * panner = nil;
panner = [[UIPanGestureRecognizer alloc] initWithTarget: self action:@selector(handlePanGesture:)];
[self.view addGestureRecognizer:panner ];
[panner setDelegate:self];
[panner release];


CGRect frame = CGRectMake(0, 0, 320, 460);
self.dimmer = [[UIView alloc] initWithFrame:frame];
[self.dimmer setBackgroundColor:[UIColor blackColor]];
[self.view addSubview:dimmer];

パンジェスチャーの処理:

-(IBAction) handlePanGesture:(UIPanGestureRecognizer *) sender
{
    static CGPoint lastPosition = {0};
    CGPoint nowPosition;
    float alpha = 0.0;
    float new_alpha = 0.0;
    nowPosition = [sender translationInView: [self view]];
    alpha = [dimmer alpha];

    if (nowPosition.y > lastPosition.y)
    {   NSLog(@"Down");
        new_alpha = min(alpha + 0.02,1.0);
        [dimmer setAlpha:(new_alpha)];
    }
    else if (nowPosition.y < lastPosition.y)
    { 
        NSLog(@"Up"); 
        new_alpha = max(alpha - 0.02,0);
        [dimmer setAlpha:(new_alpha)];
    }
    else
    {   NSLog(@" neither "); }
    NSLog(@"alpha = %f new_alpha = %f", alpha, new_alpha);
    lastPosition = nowPosition;
}

イベントがブロックされている理由はありますか?これを行うためのより良い方法はありますか?
私はいくつかの投稿を読んで、かなりグーグルで検索しましたが、非常に関連性のあるものは見ていません。

すべての助けが高く評価されています。

:BP:

役に立ちましたか?

解決

調光器ビューでuserInteractionEnabledをNOに設定してみてください。これにより、タッチイベントとやり取りしないようにビューが表示されるはずです。これにより、調光器の下のビューまで続くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top