1

私は のTTStyledTextLabel中に を持っていUITableViewCellます。セルをクリックすると新しいView Controllerに移動するため、選択を無効にすることはできませんが、 をクリックするTTStyledTextLabelUITableViewCellも選択されます。テーブル ビュー セルを選択せず​​に TTStyledTextLabel をクリックすることについて何か考えはありますか?

4

1 に答える 1

1

TTStyledTextLabelをサブクラス化し、次の 2 つのメソッドをオーバーライドするだけです。

  • (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)イベント
  • (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)イベント

ちょうどこのような:

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch* touch = [touches anyObject];
    CGPoint point = [touch locationInView:self];
    point.x -= _contentInset.left;
    point.y -= _contentInset.top;

    TTStyledBoxFrame* frame = [_text hitTest:point];
    if (frame) {
        [self setHighlightedFrame:frame];
    }
}

- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
    TTTableView* tableView = (TTTableView*)[self ancestorOrSelfWithClass:[TTTableView class]];
    if (!tableView) {
        if (_highlightedNode) {
            // This is a dirty hack to decouple the UI from Style. TTOpenURL was originally within
            // the node implementation. One potential fix would be to provide some protocol for these
            // nodes to converse with.
            if ([_highlightedNode isKindOfClass:[TTStyledLinkNode class]]) {
                TTOpenURL([(TTStyledLinkNode*)_highlightedNode URL]);

            } else if ([_highlightedNode isKindOfClass:[TTStyledButtonNode class]]) {
                TTOpenURL([(TTStyledButtonNode*)_highlightedNode URL]);

            } else {
                [_highlightedNode performDefaultAction];
            }
            [self setHighlightedFrame:nil];
        }
    }
}
于 2012-05-06T04:35:07.503 に答える