Вопрос

У меня есть подкласс UIView на вершине UITableView. Анкет Я использую UITableView Чтобы отобразить некоторые данные и, в то же время, я хотел бы наложить анимацию, которая следует за пальцем (например, оставляя след).

Если я понял это правильно, мне нужны обработанные события прикосновения оба посредством UIView подкласс и UITableView. Анкет Как я могу это сделать? Возможно ли иметь, т.е. touchesMoved вызвать на подкласс Uiview, а затем на UITableView?

Большое спасибо за любую помощь.

Это было полезно?

Решение

То, как я решил эту проблему, не так чисто, но это работает. Пожалуйста, дайте мне знать, если есть лучший способ сделать это.

Я переопределен hitTest для моего обычая UIView так что это направляет касания на UITableView под. Затем в UITableView Я справляюсь с жестами через touchesBegan, touchesMoved, и т. д. там я тоже звоню touchesBegan на UIView.

Таким образом, штрихи обрабатываются двумя просмотрами. Причина, по которой я не делаю наоборот (имея UIViewS. touchesBegan вызов UITableViewS. touchesBegan) заключается в том, что жесты узнаватели на UITableView не будет работать.

UIView подкласс ' hitTest

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    // tview is the UITableView subclass instance
    CGPoint tViewHit = [tView convertPoint:point fromView:self];        
    if ([tView pointInside:tViewHit withEvent:event]) return tView;

    return [super hitTest:point withEvent:event];
}

UITableView подкласс touchesBegan

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:touch.view];
    // ....

    // view is the UIView's subclass instance
    [view touchesBegan:touches withEvent:event];
}

Другие советы

Нет, вы не можете это сделать. Доставка мероприятия Глава говорит

Окно-объект использует хит-тестирование и цепочку респондентов, чтобы найти представление, чтобы получить сенсорное событие. В хит-тестировании окно вызывает Hittest: WithEvent: На самом максимальном представлении иерархии представления; Этот метод продолжается рекурсивно вызовом PointinSide: WithEvent: В каждом представлении в иерархии представления, которая возвращает да, продолжая иерархию, пока не найдет подвесок в пределах которого произошло. Эта точка зрения становится представлением о хит-тесте.

Итак, когда окно находит трогательное просмотр, он возвращает да. Только один вид может обрабатывать штрихи в текущий момент.

Но если вам нужно обрабатывать событие для UitableView, обратитесь к нему для Uiview! Вы можете преобразовать троганную точку в требуемые координаты с - ConvertPoint, - конвертация Функции, добавьте подвет к UitableView и перемещайте, это зависит от координаты и множества других вещей.

Uitableview Relays Unkending Touch Events в Uiview. (Google "Цепочка респондентов")Uitableview документация

Итак, вы можете справиться со своими событиями Touch только в Uiview. Так. В вашем Uiview

  1. TouchessTart - делайте инициализацию

  2. Touchsmove - Нарисуйте хвост на Uiview (используйте таймеры/задержку с задержкой на желание, чтобы он выглядел как след)

  3. Touchesend - делайте оставшиеся вещи

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top