2

私はこの問題に夢中になっています。なぜこれが起こっているのかを理解するのに何十年も費やしました。

UIScrollViewas scrollView がありUIViewます。この scrollView にはUIView、実行時に作成される 3 つの異なる があります。これらの 3 つUIViewの s のいずれかで、ボタンを作成します。これを行うコードを次に示します。

        UIButton *buttonLike = [UIButton buttonWithType:UIButtonTypeRoundedRect ] ;
        buttonLike.frame =CGRectMake(scrollViewWidth +200, 30,36, 16);
        buttonLike.imageView.image = [UIImage imageNamed:@"like.png"];
        [buttonLike addTarget:self action:@selector(buttonLikePressed:) forControlEvents:UIControlEventTouchUpInside] ;

scrollViewWidthも定義および初期化される定数です。
そして、このボタンライクを の 1 つのサブビューとして追加ますUIViews。しかし、私が何をしても、buttonLikePressedメソッドは呼び出されません。この問題を検索して、これらの解決策を思いつきました。

Iphone UIButton がネストされた UIView で機能しない
iPhone SDK 2: UIButton が nib ファイルからロードされたネストされたビューで機能しない

彼らは同じ問題を説明しました。しかし、解決策として、
-(id)initWithFrame:(CGRect)aRectメソッドを使用してビューを初期化します。さて、メソッドを使用し てUIViewsinitWithFrameを既に初期化しています。この問題を解決する方法を知っていますか?

皆さん、ありがとうございました

4

3 に答える 3

7

あなたのボタンはタッチにも反応しますか?押すとハイライトしますか?

このボタンをそのビューの境界外のビューに追加しているように聞こえるため、タッチがボタンに伝播するのを防ぎます。そのビューの幅をscrollViewWidth + 200 + 36以上に増やすか、ボタンをビューの境界内に配置する必要があります。ボタンを追加するビューを作成する方法を教えてください。

于 2012-08-14T14:17:47.647 に答える
0

UIButtonは最初にタッチイベントを取得する必要があると思いますが、ボタンが押されないという同様の問題がありました。私がやったことは、親ビューのtouchesBeganメソッドでチェックを実行して、ボタンの領域の周りに触れているかどうかを確認することでした。これは、ボタンを押しやすくするために、より広い領域を指定できたので、私の場合にも非常に役立ちました。次に、ボタンのタッチイベントを起動しました。

はるかに簡単なもう1つの方法は、ボタンの親ビューに対してisUserInteractionEnabledをfalseに設定することです。もちろん、タッチに応答する必要がない場合に限ります。

これらは問題をハックするための単なるアイデアであり、実際に問題を解決する方法がわかりません。

于 2012-08-14T14:01:08.370 に答える
0

これらすべてのビューをinitWithFrameで初期化し、有効なフレーム四角形を渡す必要があります。これを試してみると、ボタンが機能するのが好きです!

于 2012-08-14T13:39:22.033 に答える