2010-12-08 11 views
0

別のビューに行くiphoneボタンは、私が押されたときには、ビュー に行くというのが私のアプリでボタンを持っていますが、私は3秒間押したときに、それは別のビューに移動することを必要とする

以下のようなあなたはサファリのiPad上で、...あなたは、URLを押し続けると、それは、コピーなどで

ポップアップを示したが、私は3秒間押したとき、それは別のビューに行くことを必要とするとき

これが意味をなさないことを願って、私が理解していなければ、より良く説明します。

ありがとうございました! pd、また、ポップアップスタイルのウィンドウを表示する方法は? よろしく!

答えて

4

ビューコントローラでNSTimerプロパティを設定してみてください。ボタンが押されたら、タイマーを作成してプロパティに割り当てます。内側のキャンセルtouch上で実行するアクション、またはタッチを設定すると

-(void) startHoldTimer { 
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(goToNewView:) userInfo:nil repeats:NO]; 
} 

[button addTarget:self action:@selector(touchUp) forControlEvents:UIControlEventTouchUpInside]; 
[button addTarget:self action:@selector(cancelTimer) forControlEvents:UIControlEventTouchCancel]; 

[button addTarget:self action:@selector(startHoldTimer) forControlEvents:UIControlEventTouchDown]; 

及びこれに割り当てる:あなたはこれでその瞬間を検出することができます

および

//if timer fires, this method gets called 
-(void) goToNewView { 
    [self cancelTimer]; 
    [self loadSecondView]; 
} 

// normal button press invalidates the timer, and loads the first view 
-(void) touchUp { 
    [self cancelTimer]; 
    [self loadFirstView]; 
} 

//protected, just in case self.myTimer wasn't assigned 
-(void) cancelTimer { 
    if (self.myTimer != nil) 
     if ([self.myTimer isValid]) { 
      [self.myTimer invalidate]; 
    } 
} 

それの世話をする!

0

タッチイベントの1つ(名前を記憶していませんが、ボタンをタップすると起動するメソッド)の1つを実行し、3秒後に起動するようにタイマーをスケジュールする方法が考えられます。その前にユーザーが指を持ち上げると、タイマーをキャンセルして通常のボタンクリックを実行します。時間が経過すると(3秒経過した場合)、タッチアップイベントを無視して新しいビューを読み込みます。

1

-addGestureRecognizer:のボタンに追加されたUILongPressGestureRecognizerを使用すると、ボタンがしばらく押されていることを認識したときにタッチのタイミングを調整してイベントを発生させます。ただし、長押しできるものはボタンではなく、Safariの画像やリンクのように、ビュー内の実際のデータです。インタラクションパターンの再考が必要な場合があります。

関連する問題