Отклонить UIview от всплывающего окна IOS7

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

Вот код, который пользователь для всплывающего окна.

- (void) showPopView
{
 self.popview.alpha = 1;
 [self.popview setFrame:CGRectMake(15, 100, 300, 300)];
 //[self dismissPopoverAnimated:NO];
}

Код кнопки всплывающего окна.

- (********)click:(id)sender {
 [self showPopView1];
}

В viewDidLoad я использовал этот код.

self.popview.alpha = 0;

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

Благодарю.

3 ответа

То, что я сделал бы, это добавить ослепительный оверлей за всплывающим окном.

В вашем.h

@interface YourController : UIViewController{
 UIView *overlay;
}

на ваш взгляд загрузился

overlay = [[UIView alloc] initWithFrame:self.view.frame];
overlay.bakcgroundColor = [UIColor clearColor];
UITapGestureRecognizer *singleFingerTap = 
[[UITapGestureRecognizer alloc] initWithTarget:self 
 action:@selector(handleSingleTap)];
[overlay addGestureRecognizer:singleFingerTap];

И тогда ваши методы будут выглядеть так:

- (void) showPopView
{
 [self.view addSubview:overlay];
 self.popview.alpha = 1;
 [self.popview setFrame:CGRectMake(15, 100, 300, 300)];
 //[self dismissPopoverAnimated:NO];
}

- (void)handleSingleTap{
 [overlay removeFromSuperview];
 self.popview.alpha = 0;
 [self.popview setFrame:CGRectZero];
}


На фоне всплывающего окна добавьте настраиваемую кнопку (********), чтобы скрыть всплывающее окно. Как пользовательская кнопка, пользователь может видеть фоновое представление. Убедитесь, что кнопка должна занимать весь экран. Также, когда u показывает всплывающее представление, показывается кнопка, и когда пользователь скрывает поп-вид, спрячьте кнопку также, чтобы пользователь мог получить доступ ко всей области. Это самый простой способ. Существуют и другие варианты, такие как Tap gesture или проверка касаний, но пользовательская кнопка в фоновом режиме может свести к минимуму риск.


Я создал демоверсию, используя ********, и она работает, проверьте below-

- (void)viewDidLoad
{
 [super viewDidLoad];
 backgroundButton = [[******** alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];

 [backgroundButton addTarget:self action:@selector(tapDetected) forControlEvents:UIControlEventTouchUpInside];
}

-(void)tapDetected
{
 [backgroundButton removeFromSuperview];
 [tempView removeFromSuperview];
}

-(void)showPopup /* on button click I created popup view as you already had */
{
 [self.view addSubview:backgroundButton]; //Adding button to self.view

 tempView = [[UIView alloc] initWithFrame:CGRectMake(15, 100, 300, 300)];
 [tempView setBackgroundColor:[UIColor redColor]];

 [backgroundButton addSubview:tempView]; //Adding popup view to button.
 [tempView setAlpha:1];
}

licensed under cc by-sa 3.0 with attribution.