多くのボタンがあるスクロールビューがあります。私はscrollView内のUIButtonのタッチを検出したいが、それらを得ることができませんでした。私はuiscrollviewをサブクラス化しようとしましたが、uibutton が失敗しました。ユーザーがそのボタンを短時間、例えば2秒間保持している場合、ボタンのタッチを検出したいと思います。そして、私はボタンをユーザーがスクロールビューにドラッグできる場所にドラッグしたいと思います。 Plzは私を助けます。UIScrollViewのサブビューとしてUIButtonのタッチ検出が追加されました
答えて
サブクラス化する必要はありません。
UIButton
UILongPressGestureRecognizer
に添付してください。
詳細はhereをご覧ください。
ジェスチャー認識は、iOS 3.2から利用でき、ジェスチャーに関連するすべてのことを非常に簡単にします。 Hereチュートリアルを見つけることができます。
以前のバージョンをサポートしたい場合は、別の方法に頼る必要があります:
はあなたのボタンに
UIControlEventTouchUpInside
とUIControlEventTouchDown
アクションを追加します。touchDownハンドラの開始時間(現在の時間で変数を設定)。
in touchUpハンドラのカウントを停止します。差を測定し、あなたのしきい値を超えている場合は、あなたの行動を起こす。
これがうまくいかない場合は、なぜそれができないのかについて、さらに詳しい情報を提供してください。
あなたはその後、@sergioようなので、あなたが追加することができますscrollviewのページを設定する際に、各ボタンにUILongPressGestureRecognizer
(またはuicontrolevent)を追加すると、scrollView
上の各ボタンのtag
を設定することができます。
[button addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];
または
UILongPressGestureRecognizer *twoSecPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(someAction:)];
[twoSecPress setMinimumPressDuration:2];
[button addGestureRecognizer:twoSecPress];
[twoSecPress release];
とあなたのアクションで..
-(IBAction)someAction:(id)sender{
UIButton *button=(UIButton*)sender;
if(button.tag==YOUR_TAG){
//do something
}
}
または
-(void)someAction:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
if ([recognizer.view isKindOfClass:[UIButton class]]) {
UIButton *tmpButt=(UIButton *)recognizer.view;
NSLog(@"%d", tmpButt.tag);
}
}
お返事を
また、長押しした後にドラッグして、scrollViewのボタンをドラッグして他の位置に移動したいと思っています。どのように私はこれを達成することができます。 –
- 1. UIScrollViewにUIButtonを追加し、UIScrollViewをUIViewに追加します。
- 2. カスタムUIButtonの追加サブビュー
- 3. 手書きで追加されたサブビューを介してストーリーボードでサブビューが追加されましたか?
- 4. UIButtonでタッチしたときのUIViewのタッチを検出する方法は?
- 5. UIButtonのaddtarget:タッチした後に呼び出されません!
- 6. touchesBeganとtouchesEndedが別のサブビューで検出されました
- 7. UITextViewをUIViewのサブビューとしてUIScrollViewに追加する
- 8. UIScrollViewに追加されたUIImageViewsのタップを検出する
- 9. UIButtonによるタッチ検出
- 10. uimageviewのタッチイベントがサブビューとして親ビューに追加されました
- 11. ボタンが押されたときにUIButtonの下でUIVuttonのタッチを検出します。
- 12. UIButtonイベントが検出されたときの検出
- 13. iOS UIScrollView clipToBounds = NOサブビューが検出されない
- 14. iPhone - UIScrollViewの...タッチの座標を検出
- 15. どのサブビューがプログラムでタッチされたかを検出する方法
- 16. UIScrollViewのサブビューをグリッドパターンで追加する
- 17. UIScrollViewから下のUIButtonにタッチします
- 18. UIScrollViewのタッチ位置を検出しますか?
- 19. サブビューとして追加されたNSViewが表示されない
- 20. サブビューを追加した後にSuperViewでタッチを取得
- 21. UITableViewのデータをサブビューとして追加しました
- 22. RecyclerView java.lang.IndexOutOfBoundsException:不一致が検出されました。追加フラグメント
- 23. UIScrollViewにサブビューを追加する
- 24. UIScrollViewにランドスケープモードでサブビューを追加する
- 25. UiScrollViewにスムーズにサブビューを追加する
- 26. サブビューに追加されたビューのタッチを受け取る方法
- 27. UIScrollviewにサブビューとして多くのUIViewを追加する方法
- 28. UIScrollViewにUIButtonを追加する問題
- 29. タッチが検出されませんか?
- 30. レスポンダチェーンを使用してサブビューが追加されたときを確認する
感謝を(明らかにあなたの.hにUIGestureRecognizerDelegateを追加)、しかし、その後longPress後、私は、ユーザーがそれをドラッグする、スクロールビュー内の任意のスペース上のボタンを移動する必要があります。これに対して何ができるのか。 –
上記のリンク先のチュートリアル(http://www.icodeblog.com/2010/10/14/working-with-uigesturerecognizers/)では、「動作の実装」のセクションに移動し、作業コードを見つけることができます。 – sergio
助けてくれてありがとう。 –