2012-02-14 3 views
4

タッチイベントに応答する必要があるtableViewセルにボタンがあります。通常、これは簡単に-tableViewの内部ボタンがUITableViewCellで動作しないサブタイトルがUITableViewCellのビューのサブビューである場合

[cell.playButton addTarget:self action:@selector(playButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

によって解決されるだろう:cellForRowAtIndexPath:

私が午前の問題は、私のボタンはカスタムUITableViewCellのサブクラスの内部にあるということであり、また、そのビューのサブビューです私は、例えば

...そのクラスの内部で作成しています:ボタンは、私は目の中に作成するビューのサブビューがある

UIView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
    self.theView = view; 
    [self addSubview:view]; 
    [view release]; 


    UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    playButton.frame = CGRectMake(5, 5, 100, 30); 
    [playButton setImage:[UIImage imageNamed:@"button_playvid.png"] forState:UIControlStateNormal]; 
    [playButton setImage:[UIImage imageNamed:@"button_playvid_active.png"] forState:UIControlStateHighlighted]; 
    self.playButton = playButton; 
    [self.theView addSubview:playButton]; 

e custom UITableViewCellボタンが押されずにセルが強調表示されるので、-tableView:cellForRowAtIndexPathで設定したターゲットは決して呼び出されません。なぜ、..どんな助け?

おかげで、

ジョエル

PS。私はおそらく、すでに一つあるので、これとまったく同じようなバックグラウンドビューを作成する実際的な理由はないと考えています。これは私が持っている問題を説明するために使用しているコードの例です。:D

ありがとう!

+0

"playButtonPressed:"メソッドの実装で質問を編集してください。 – Krishna

+1

UIButtonをビューコントローラに作成し、それをビューコントローラのビューのサブビューとして追加すると、(同じビューコントローラのビューにも追加される)uitableviewのセルに追加していますか?それは良い考えではありません... – MGA

+0

あなたの新しい[ビューaddSubview:playButton]にあなたのボタンを追加してください – Hiren

答えて

9

追加しているUIViewは、実際はUIImageViewです。ドキュメントから:

新しいイメージビューオブジェクトは、デフォルトでユーザーイベントを無視するように構成されています。 UIImageViewのカスタムサブクラスでイベントを処理する場合は、オブジェクトを初期化した後に、userInteractionEnabledプロパティの値をYESに明示的に変更する必要があります。

私はあなたのボタンがタッチを受けたことはありませんのでuserInteractionEnabledサブビューにカスケードまたはいずれかのスーパーが、この場合には、そのサブビューにタッチを渡さないと思います。画像の表示を.userInteractionEnabled = YESに設定して、うまくいくはずです。

+0

それは動作します!ご協力いただきありがとうございます!!私がサンプルコードhahaを作成したとき、私はうっかりUIImageViewとして保管していました。 –

+0

問題ありません。これは完全に形成された質問でした。つまり、明確な例、再現しやすい、存在するすべての情報、自己完結型のものでした。 – jrturton

1

私は同じ問題があり、すべてを試しました。最終的にそれをやった事が代わりにボタンの

+0

このヒントをお寄せいただきありがとうございます。私は同じ問題を抱えていて、 '' userInteractionEnabled''プロパティが正しく設定されていることをすべて確認していました。 私は '' tableView:heightForRowAtIndexPath: ''をオーバーライドし、何らかの不明な理由で0を返していました。 – Col

0

、あなたがイメージと同じことを試みることができる(NIBファイルを調べ)の高さは、カスタムセルのあるものは何でも

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

ちょうど返すメソッドを実装しました。 。イメージがクリックされたときに呼び出されるメソッドを定義することができます。

関連する問題