событие касания вне моего подпредставления должно вызвать исчезновение подпредставления - PullRequest
1 голос
/ 13 сентября 2011

У меня есть подкласс UIView, который отображается, когда я нажимаю кнопку панели навигации.Я пытаюсь имитировать вид UIPopover в iphone.То, с чем я застрял, это то, что я должен удалить подпредставление при касании за пределами рамки.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

Когда вы определяете свое всплывающее окно, вы должны определить его видимый прямоугольник (рамку). В вашем главном контроллере вида, когда пользователь нажимает на экран, получает местоположение касания и проверяет, что точка не содержится в вашем всплывающем фрейме.

Это просто пример, иллюстрирующий это:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    if (aTouch.tapCount == 1)
    {
        CGPoint p = [aTouch locationInView:self.view];
        if (!CGRectContainsPoint(yourpopupview.frame, p))
        {
            // dismiss the popup
        }
    }
}

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

2 голосов
/ 13 сентября 2011

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

Вы можете увидеть пример здесь, чтобы убрать клавиатуру вместо удаления вида:

http://www.ke -cai.net / 2011/05 / кран-фон к распускать-клавишник for.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...