FormSheet式模態視圖,點擊模態視圖外隱藏模態視圖的方法,formsheet模態

來源:互聯網
上載者:User

FormSheet式模態視圖,點擊模態視圖外隱藏模態視圖的方法,formsheet模態

#pragma -mark 點擊模態視圖外的空白處隱藏模態視圖


- (void)viewDidAppear:(BOOL)animated

{

    [super viewDidAppear:animated];

    _tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(handleTapBehind:)];

    [_tapRecognizer setNumberOfTapsRequired:1];

    _tapRecognizer.cancelsTouchesInView = NO; //So the user can still interact with controls in the modal view

    [self.view.window addGestureRecognizer:_tapRecognizer];

    [_tapRecognizer setDelegate:(id<UIGestureRecognizerDelegate>)self];

}


- (void)handleTapBehind:(UITapGestureRecognizer *)sender

{

    if (sender.state == UIGestureRecognizerStateEnded) {

        

        // passing nil gives us coordinates in the window

        CGPoint location = [sender locationInView:nil];

        

        // swap (x,y) on iOS 8 in landscape

        if (SYSTEM_VERSION_MORE_THAN_8) {

            if (UIInterfaceOrientationIsLandscape([UIApplicationsharedApplication].statusBarOrientation)) {

                location = CGPointMake(location.y, location.x);

            }

        }

        

        // convert the tap's location into the local view's coordinate system, and test to see if it's in or outside. If outside, dismiss the view.

        if (![self.view pointInside:[self.view convertPoint:location fromView:self.view.window] withEvent:nil]) {

            

            // remove the recognizer first so it's view.window is valid

            [self.view.window removeGestureRecognizer:sender];

            [self dismissViewControllerAnimated:YES completion:nil];

        }

    }

}


#pragma mark - UIGestureRecognizer Delegate


- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

    return YES;

}


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer

{

    return YES;

}


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

{

    return YES;

}

 

轉載:http://my.oschina.net/CreeveLiu/blog/347913 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.