iphone - 我的 subview 之外的触摸事件应该导致 subview 消失

标签 iphone ios uiview

我有一个 UIView 子类,一旦我单击导航栏按钮就会显示。我试图在 iphone 中模仿 UIPopover 类型的 View 。
我坚持的事情是我必须在框外触摸时删除 subview 。

有什么建议么?

最佳答案

当您定义弹出 View 时,您必须定义它的可见矩形(框架)。
在您的主视图 Controller 中,当用户点击屏幕时,检索触摸位置并检查该点是否未包含在您的弹出框架中。

这只是一个例子来说明这一点:

- (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
        }
    }
}

我希望它会帮助你。

关于iphone - 我的 subview 之外的触摸事件应该导致 subview 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403022/

相关文章:

javascript - 如何在 html 中为 iphone 禁用水平滚动

ios - _UIReplicantView 和 snapshotViewAfterScreenUpdates 如何获取其内容?

iphone - 通过编程 View 创建避免对 iPhone 屏幕尺寸进行硬编码

java - 我怎样才能在Android中实现这个UI

iphone - CGContextSetShadow 不产生任何结果

ios - 带有参数的 Swift 类型反射初始化

ios - 如何在 Xcode 9.2 中获取新的 iOS SDK?

ios - 每次更改 ViewController 时执行该函数

ios - 如何更改 settings.bundle 的字体类型

iphone - iOS 7 喜欢半透明模糊 View