頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


UIButtonをタップしても反応しない理由

画面上のボタン(UIButtonオブジェクト)をタップしても反応がない、、、たまにあるんだよね。
俺の場合その原因は次の三つのうちのどれか。
(1)ボタンがそれを乗せるビューのframeからはみ出ている場合
(2)ボタンの上にUIViewオブジェクトを乗せている場合
(3)ボタンタップ時のメッセージ送信先をデリゲートにしてる場合(できることもある)

この前もボタンをタップしても反応しない〜、って状況になってさ。ビューの設定がややこしい感じだったので(1)が原因かな、とその辺りをチェックしていたんだけど全然原因が確定しないんだよ。
四苦八苦したあげくわかったのが、ボタンの上に透明なビューを乗せている状態になっていた、というオチでさ。
随分と時間を無駄にしちゃったよ。


(3)の補足
[button addTarget:_delegate action:@selector(tappedButton:) forControlEvents:UIControlEventTouchUpInside];
↑UIButtonの設定時によくこういうコードを書くと思うんだけど、このコードのtargetに直接デリゲートを指定するとメッセージが送信できないことがあったのよ。
MVC的なファイル構成だとVIEWにボタン設置のコードを書いて、タップされば場合にはすぐにCONTROLLERへそのことを伝えるわけじゃない。その場合に直接デリゲートであるCへメッセージを送信したいので上のようにしたんだけどねえ。たぶん俺の理解が浅いので原因が特定できないんだろうけど。

とりあえず、
{
    //ボタンの設定
    [button addTarget:self action:@selector(tappedButton:) forControlEvents:UIControlEventTouchUpInside];
}

-(void)tappedButton:(UIButton *)button
{
    [_delegate tappedButton:button];
}
ってな感じで、targetにselfを指定してそこでデリゲートにメッセージを送ると大丈夫なんだけど、、、なんだか無駄だよねえ。

<< Google二段階認証でコード受け取り方法を音声通話に変更してみた  TopPage  CALayerはタッチイベントを取得できない >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/849-3090eacf




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad