-3

この画像でわかるように: ここに画像の説明を入力

プログラムで同じ機能をどのようにシミュレートしますか?

これを有効にするコードのリンクを提供してください。


編集:

申し訳ありませんが、明確でない場合は、実際には背景画像のあるボタンがほとんどないアプリを開発しています。ユーザーがクリックしてブックマークに追加するたびに、新しいボタンが画面に作成されるブックマークを追加する機能があります。画面からブックマークを削除する必要があります。そのためには、上にスライドしてブックマークを削除しましたが、そのボタンをアニメーション化することはできません。また、上にスライドせずに画面を押し続けるだけで削除する必要があります。

検出をスワイプするコードは次のとおりです。

- (void) handleSwipe:(UISwipeGestureRecognizer *)swipe {
    NSLog(@"swiping up..");
    //some code here.. to display Deletion Icon on the corner of the button
}

しかし、iPhoneでアプリを削除するのと同じように、タッチプレスイベントを識別する方法がわかりません。

ありがとうアシッシュ

4

2 に答える 2

1

アプリをプログラムで削除したいということであれば、いいえ、できません。Apple はそれを行うためのデフォルトの方法を提供しています。そのため、自分で行うために新しい方法を追加する必要はありません。

それを行うには 2 つの方法があります。

1. iDevice からアプリケーションを直接削除する方法。

iPhone、iPod Touch、または iPad からアプリケーションを削除したい場合、このタスクを実行するのは簡単なプロセスです。

~削除したいアプリケーションを見つけます

〜アイテムをダブルタップしますが、指を画面上に置いたままにします。ここでトーンが鳴り、VoiceOver が「移動するアプリケーション名」とアナウンスします。

~アイテムをもう一度ダブルタップします。

2. iTunes で iDevice のアプリケーションを削除する方法

iPhone、iPad、または iPod Touch からアプリケーションを直接削除したくない場合は、iTunes で削除できます。以下を実行するだけです。

~iTunesを開いてソーステーブルを操作する

~アプリケーションに移動し、テーブルとの対話を停止します

~実際のアプリケーションのリストに移動し、削除するアプリに移動します

~確認ダイアログボックスが表示されたら、キーボードの削除キーを押してから、削除ボタンのVOキーとスペースバーを押します

~次に、ファイルを完全に削除するか、iTunes ライブラリからのみ削除するかを決定します

次に、アプリケーションを削除するかどうかを確認するメッセージが表示されます。「削除」ボタンをダブルタップして決定を確認するか、気が変わった場合は「キャンセル」ボタンをダブルタップしてください。

于 2013-03-19T04:52:11.537 に答える
0

正しい方向に私を導くためのrobmayoffによる大きな助け。

- - - - - - - - - 編集: - - - - - - -

注: これは、アプリを削除しているときにiPhoneのように正確に表示されるわけではありませんが、さまざまな方法でアニメーション化されるため、簡単に実現できます。

------------------

次の方法で、コードの削除機能を実現しました。

-(void)handleLongPress:(UILongPressGestureRecognizer *)swipe
{
   if (swipe.state == UIGestureRecognizerStateBegan)
   {
    NSLog(@"long pressed up..");
    @try {
        UIButton *btnDelete = (UIButton *)[self.view viewWithTag:977];
        [btnDelete removeFromSuperview];

        if(self.btnIDToDelete == swipe.view.tag)
        {
            self.btnIDToDelete = -1;
            UIButton *btnToDelete = (UIButton *)[self.view viewWithTag:swipe.view.tag];
            CALayer *layer = btnToDelete.layer;
            [layer removeAnimationForKey:@"DeleteAnimation"];
            return;
        }
    }
    @catch (NSException *exception) {

    }
    @finally {

    }

    NSInteger tag = swipe.view.tag;
    NSLog(@"id is = %d", tag);
    self.btnIDToDelete = tag;
    UIButton *btnToDelete = (UIButton *)[self.view viewWithTag:tag];
    UIButton *btnDelete = [[UIButton alloc] initWithFrame:CGRectMake(btnToDelete.frame.origin.x - 1, btnToDelete.frame.origin.y + 45, 50, 49)];
    [btnDelete addTarget:self action:@selector(deleteFavButton:) forControlEvents:UIControlEventTouchUpInside];
    btnDelete.tag = 977;
    UIImage *imgBack = [UIImage imageNamed:@"crossIpad.png"];
    [btnDelete setBackgroundImage:imgBack forState:UIControlStateNormal];

    [self.view addSubview:btnDelete];
    [btnDelete release];


    CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    pulseAnimation.duration = .5;
    pulseAnimation.toValue = [NSNumber numberWithFloat:1.1];
    pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    pulseAnimation.autoreverses = YES;
    pulseAnimation.repeatCount = FLT_MAX;
    //pulseAnimation.repeatCount = 5;
    //pulseAnimation.fillMode = kCAFillModeForwards;
    //pulseAnimation.removedOnCompletion = NO;
    pulseAnimation.fillMode = kCAFillModeBackwards;
    pulseAnimation.removedOnCompletion = YES;

    float xVal = btnToDelete.frame.origin.x;
    float yVal =btnToDelete.frame.origin.y;
    float widthVal = btnToDelete.frame.size.width;
    float heightVal = btnToDelete.frame.size.height;


    NSLog(@"-- xVal=%f -- yVal=%f -- widthVal=%f -- heightVal=%f -- ",xVal, yVal, widthVal, heightVal);

    if(xVal < 48)
        xVal = 48;
    else if (xVal > 250 && xVal < 278)
        xVal = 278;
    else if (xVal > 480 && xVal < 508)
        xVal = 508;

    if(yVal < 95)
        yVal = 95;
    else if(yVal > 250 && yVal < 310)
        yVal = 310;
    else if(yVal > 500 && yVal < 525)
        yVal = 525;


    [btnToDelete setFrame:CGRectMake(xVal, yVal, widthVal, heightVal)];
    CALayer *layer = btnToDelete.layer;
    [layer addAnimation:pulseAnimation forKey:@"DeleteAnimation"];


   }
}

あなたはこれを次のように呼ぶべきです:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPress:)];
    longPress.numberOfTouchesRequired = 1;
    [btn addGestureRecognizer:longPress];
    [longPress release];

注:「deleteFavButton」メソッドに適切なメッセージを表示し、そこで削除コードを処理します。

于 2013-03-19T06:51:53.713 に答える