Как сделать возможным взаимодействие с дочерним UIView, нарисованным за пределами родительского UIView? - PullRequest
1 голос
/ 12 марта 2012

У меня есть что-то вроде микшера, который открывает громкость треков, когда я касаюсь кнопки.

Чтобы не делать вид больше, чем нужно, я рисую ползунки громкости за пределами границ.Дело в том, что теперь у меня есть прикосновение, которое обрабатывается тем, что находится под этими ползунками, а не ползунками, которые они сами.

Как я могу сделать так, чтобы ребенок UIView получал прикосновения, когда он находится за пределами родительских границ, но выше всего, что окружает?

Возможно ли это?

Я попробовал метод проверки удара, предложенный в ссылке ниже, безуспешно:

взаимодействие за пределами uiview

Спасибо,

С наилучшими пожеланиями,

Нуно Сантос

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Я нашел решение этой проблемы.В основном мне нужно переопределить метод

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

, который

"Возвращает логическое значение, указывающее, содержит ли получатель указанную точку."

Сначала я проверяю точку с помощьюсупер вид.Если он не вернет ничего, я проверю объекты, которые нарисованы за пределами родительских границ.

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    if ([super pointInside:point withEvent:event])
    {
        return YES;
    }
    else
    {
        id elem;

        NSEnumerator * enumerator = [tracks objectEnumerator];

        while(elem = [enumerator nextObject])
        {
            LKTrack *track = (LKTrack*) elem;

            if ([track pointInside:[self convertPoint:point toView:track] withEvent:event])
            {
                return YES;
            }
        }
    }

    return NO;
}
0 голосов
/ 29 мая 2013

В ответе выше, что такое «треки» и как вы его получаете?

...