2011-07-15 15 views
0

多くのボタンがあるスクロールビューがあります。私はscrollView内のUIButtonのタッチを検出したいが、それらを得ることができませんでした。私はuiscrollviewをサブクラス化しようとしましたが、uibutton が失敗しました。ユーザーがそのボタンを短時間、例えば2秒間保持している場合、ボタンのタッチを検出したいと思います。そして、私はボタンをユーザーがスクロールビューにドラッグできる場所にドラッグしたいと思います。 Plzは私を助けます。UIScrollViewのサブビューとしてUIButtonのタッチ検出が追加されました

答えて

4

サブクラス化する必要はありません。

UIButtonUILongPressGestureRecognizerに添付してください。

詳細はhereをご覧ください。

ジェスチャー認識は、iOS 3.2から利用でき、ジェスチャーに関連するすべてのことを非常に簡単にします。 Hereチュートリアルを見つけることができます。

以前のバージョンをサポートしたい場合は、別の方法に頼る必要があります:

  1. はあなたのボタンにUIControlEventTouchUpInsideUIControlEventTouchDownアクションを追加します。

  2. touchDownハンドラの開始時間(現在の時間で変数を設定)。

  3. in touchUpハンドラのカウントを停止します。差を測定し、あなたのしきい値を超えている場合は、あなたの行動を起こす。

これがうまくいかない場合は、なぜそれができないのかについて、さらに詳しい情報を提供してください。

+0

感謝を(明らかにあなたの.hにUIGestureRecognizerDelegateを追加)、しかし、その後longPress後、私は、ユーザーがそれをドラッグする、スクロールビュー内の任意のスペース上のボタンを移動する必要があります。これに対して何ができるのか。 –

+1

上記のリンク先のチュートリアル(http://www.icodeblog.com/2010/10/14/working-with-uigesturerecognizers/)では、「動作の実装」のセクションに移動し、作業コードを見つけることができます。 – sergio

+0

助けてくれてありがとう。 –

1

あなたはその後、@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); 
    } 
} 

お返事を

+1

また、長押しした後にドラッグして、scrollViewのボタンをドラッグして他の位置に移動したいと思っています。どのように私はこれを達成することができます。 –

関連する問題