Как отслеживать клики за пределами пользовательского представления

У меня есть собственное представление, это выглядит так

Как я могу отследить щелчок по пустому пространству (за пределами вида) и скрыть его?

2 ответа

Решение

Вы можете использовать touchesBegan отследить это так:

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    UITouch *touch= [touches anyObject];
    if ([touch view] == self.view)
    {
        // do stuff
    }
}

Для быстрого:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        if let touch = touches.first {
            if touch.view == self.view {
                // do stuff
            }
        }
        super.touchesBegan(touches, withEvent:event)
    }

Вы можете добавить UIView в пользовательском представлении, охватывающем весь экран, присвойте ему альфа 0,1 или около того. Затем вы можете добавить tapGestureRecognizer чтобы поймать все прикосновения за пределами пользовательского представления.

Просто не забудьте также скрыть наложение, когда вы скрываете пользовательский вид, чтобы касания не блокировались впоследствии.

Другие вопросы по тегам