在iPhone上打开模态视图和关闭

时间:2010-12-17 22:05:26

标签: iphone objective-c ios

如何显示全屏模式视图,然后如果用户触摸视图上的任何位置,视图将自行删除。

3 个答案:

答案 0 :(得分:0)

您可以提供一个自定义按钮作为背景的模态视图,然后当您按下按钮或“背景”时,可以调用[self dismissModalViewControllerAnimated:YES];

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
   UITouch *touch = [touches anyObject];

 if ([touch view] == self) {
      if ([touch tapCount] == 2) {
         /* 2 touches here, you can dismiss your view */
      }
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
   UITouch *touch = [touches anyObject];

   if ([touch view] == self) {
      if ([touch tapCount] == 1) {
  /* 1 touch, dismiss your view */   
  }
}

答案 1 :(得分:0)

如果您在UIViewController的子类中执行此操作,则可以执行此类操作。这将触发最初加载视图时出现的模态,并在点击屏幕时触发模态消失。

-(void) viewDidLoad{
    UIViewController *modalViewController = [[UIViewController alloc] init];

    [modalViewController addTarget:self action:@selector(_dismissModal) forControlEvents:UIControlEventTouchUpInside];
    [self presentModalViewController:modalViewController animated:YES];
}

-(void)_dismissModal{
    [self dismissModalViewControllerAnimated:YES];
}

答案 2 :(得分:0)

  1. 将自定义UIButton放在要以模态方式呈现的视图上的所有内容上。 (自定义UIButton是透明的)
  2. 使用其中一个视图方法连接UIButton的 Touch Up Inside (以便它可以通知其委托视图控制器有关该事件)。
  3. 在委托视图控制器中实现相应的方法,以便在委托听到它时可以解除模态视图。