でないときにiphone UIButtonセレクタが機能しない多くのさまざまな方法を試しましたが、自分のコードで何が問題なのかわかりません。フレームの起点が0,
マップ上のピンをクリックすると表示されるカスタムのコールアウトバブルを作成し、バブルの中のいくつかのイメージを表示します。ユーザーがクリックして詳細情報にアクセスできるようにdetaildisclosureボタンが必要です。私の問題は、バブルとボタンが表示されているが、ボタンのクリックがセレクタメソッドと呼ばれていないことです。
//編集:申し訳ありませんが、私はあまりにも多くのコードを入れて初めて、私はこの方法では
、より具体的にはあなたの答えに感謝をしようとして編集しますので:
- (id) initWithAnnotation:(id)annotation reuseIdentifier:(NSString *)reuseIdentifier
まず私の代わりに、通常のピンのカスタムアイコンを変更するには、ImageViewの
self = [super initWithAnnotation:myAnnotation reuseIdentifier:reuseIdentifier];
self.frame = CGRectMake(0, 0, kWidth, kHeight);
self.backgroundColor = [UIColor clearColor];
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon.png"]];
imageView.frame = CGRectMake(kBorder, kBorder, kWidth - 2 * kBorder, kWidth - 2 * kBorder);
[self addSubview:imageView];
私はサブビューとして追加し、バブル吹き出しをカスタマイズすると同時に、私はいくつかのラベルとイメージを作成し、Iを示し私はテキストに丸みを帯びた矩形の背景とサイズを作成、ピンの選択方法は、その後
calloutView = [[UIView alloc] initWithFrame:CGRectMake(10, 30, restNameLbl.frame.size.width + 30, 60)];
calloutView.hidden = YES;
と呼ばれるまで、それは最初に隠されていること、ビューcalloutViewにdded私がいないので、私はコードのその部分を除外それは今重要だと思う、私はそれを置く必要があるなら、私に知らせて、私はデフォルトのiphoneバブルマップsytleをシミュレートするために、一部のグラフィックス機能を使用
そして私はcalloutViewの前に作成されたすべての要素を追加します。
[calloutView addSubview:backgroundRect];
[calloutView addSubview:restNameLbl];
[calloutView addSubview:likeImg];
[calloutView addSubview:likesLbl];
[calloutView addSubview:noLikeImg];
[calloutView addSubview:noLikesLbl];
そして、私はその場所を正しい場所に置く
//position callout above pin
calloutView.frame = CGRectMake(-25, -calloutView.frame.size.height-10, calloutView.frame.size.width + 50, calloutView.frame.size.height);
[self addSubview:calloutView];
と同じバブルビューで - calloutViewと呼ばれる私は、ユーザーがより多くの情報にアクセスできるように詳細開示ボタンを表示したいが、私はcalloutViewに直接追加した場合、セレクタのイベントがトリガされることはありません。だから私は、それが親ビューにボタンを追加することだという異なった方法でそれを実行しようとしましたyesにその隠された状態を入れて、セレクタ方式
accessory = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[accessory setTitle:myAnnotation.idRest forState:UIControlStateNormal];
accessory.hidden= YES;
// NOTE上でそれを示しています。ここでは、次の場合に問題です私はこのフレームラインを残して、すべてが完璧に動作するか、origin.xとorigin.yを0,0に設定しても、ビューの正しい場所に表示するように番号を変更したときにボタンセレクターが機能しなくなる
accessory.frame = CGRectMake(110, calloutView.frame.origin.y+25, accessory.frame.size.width, accessory.frame.size.height);
次に、クリックしたときに呼び出されるselectorイベントを追加します。calloutAccessoryTapという関数が呼び出されるのは、付属のフレームorigin.xとyの両方が0
accessory.userInteractionEnabled = YES;
[accessory addTarget:self action:@selector(calloutAccessoryTap) forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchCancel];
そして最後に設定されている場合、私が最初に表示したばかりであるメインビューに
[self addSubview:accessory];
をボタンを追加して示されているかいませんラベルと画像を含む吹き出しビューは非表示になり、詳細ボタンにも同様のことが起こり、ピンが選択され、吹き出しを表示する必要があるときに、吹き出しビューとボタンが表示されます。すべてが画面上に見えますが、付属品のフレームが原点xとy 0,0とは異なる良好な位置に設定されていると、セレクタは機能しなくなります。
私は多くの異なることを試みたが、どれも働いていなかったので、助けてくれることを願っています。
あなたはちょうどコードをトリミングできますか?あまりにも多くの...問題を説明し、問題を引き起こしていると思われるコード。そのコードをすべて解決して解決策を見つけるのは難しいです。 – lukya