0

ユーザーが電話を振ったときにテーブル ビューから行を削除する iPhone アプリケーションを開発しています。ナビゲーション ベースのプロジェクトを作成しました。ユーザーが iPhone を振ると、ナビゲーション バーのタイトルが "DELETE" に変わり、同じビューでナビゲーション バーに削除ボタンが表示されます。それ以外の場合、ユーザーが特定の行を選択すると、次のビューに移動する必要があります。以下のコードを書きましたが、うまくいきません。私を助けてください。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if (isShaked == NO) 
    {       
    //logic to move to next view goes here.
    }   
    else 
    {

        self.title = @"Delete Rows";
        delete=[[UIBarButtonItem alloc] initWithTitle:@"Delete rows" style:  
UIBarButtonItemStyleBordered  target:self action:@selector(deleteItemsSelected)] ;

                 self.navigationItem.rightBarButtonItem=self.delete;
        MyTableCell *targetCustomCell = (MyTableCell *)[tableView  cellForRowAtIndexPath:indexPath];
        [targetCustomCell checkAction];
        [self.tempArray addObject: [myModal.listOfStates objectAtIndex:indexPath.row]];

        //[delete addTarget:self action:@selector(deleteItemsSelected:) forControlEvents:UIControlEventTouchUpInside];

        self.tempTableView = tableView;
    }
}

-(void)deleteItemsSelected
{
    [myModal.listOfStates removeObjectsInArray:tempArray];
    [tempTableView reloadData];
}

checkActionmethod は、選択した行に目盛りを付けるために使用されるカスタム セル メソッドです。

4

2 に答える 2

0

電話が揺れたかどうかを確認するには、クラスで UIAccelerometerDelegate プロトコルを使用する必要があります。

例えば:

@interface myTableViewClass : UITableView <UIAccelerometerDelegate>

次に、電話がいつ振られたかを知る必要があります (私はこれを viewDidLoad で使用しています)。

[[UIAccelerometer sharedAccelerometer] setDelegate:self];
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:0.1];

ユーザーが電話を振ったら、次の方法で魔法をかけることができます。

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{   
    if(fabsf(acceleration.x) > 2.2 || fabsf(acceleration.y) > 2.2 || fabsf(acceleration.z) > 2.2){
        //The user has shaken the iPhone
    }
}

明らかに間隔を変更してより頻繁にチェックし、必要に応じて accelerometer:didAccelerate メソッドのパラメーターを変更できます。

于 2010-07-01T20:34:47.440 に答える
0

これらのメソッド/API を確認してください。

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

これらは、モーション認識用に提供されたイベント ハンドラーです。これらを使用する前に、ドキュメントに目を通してください。

于 2010-10-25T10:12:04.953 に答える