0

UITableViewCell指を通すとハイライトは出来ますか?それを押し下げたときだけでなく、指がすでに画面を横切ってテーブルビューセルの上を走っているときですか?すべてのジェスチャ認識機能 (を含むUILongPressGestureRecognizer) を試しましたが、うまくいきませんでした。

4

2 に答える 2

1

この関数を使用してみてください。これは、コメントで言及されている質問のものと似ています。

(あなたのviewControllerで)

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    //assuming UITableView named tableView
    UITableViewCell *tableViewCell;
    CGPoint touchedPoint = [[touches anyObject] locationInView:self.view];

    for (int C = 0; C < [tableView numberOfRowsInSection:0]; C++) {
        //this should loop through all cells in your tableview

        tableViewCell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndex:C]];

        if (CGRectContainsPoint(tableViewCell.frame, touchedPoint)) {

            [tableViewCell setHighlighted:TRUE];
        }  
        else {
            [tableViewCell setHighlighted:FALSE];
        }
    }
}
于 2012-10-10T03:40:13.710 に答える
0

cellForRowAtIndexPath:

UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
[recognizer setDirection:UISwipeGestureRecognizerDirectionRight];
[cell.contentView addGestureRecognizer:recognizer];

それから...

- (void)handleSwipe:(id)sender
{
    UISwipeGestureRecognizer *recognizer = (UISwipeGestureRecognizer *)sender;
    UIView *contentView = [recognizer view];
    UITableViewCell *cell = (UITableViewCell*)[contentView superview];
    [cell setSelected:YES];
}

これをテストしたところ、探しているものとまったく同じように機能します。

編集:急いでいなければ、型キャストの前に内省を行っていたでしょう。

于 2012-10-10T03:52:13.653 に答える