我有一个UIView子类,一旦我点击导航栏按钮就会显示。我试图在iphone中模仿UIPopover类型的视图。 我坚持的是,我必须在框外触摸时删除子视图。
有什么建议吗?
答案 0 :(得分:3)
定义弹出视图时,必须定义它的可见rect(帧)。 在主视图控制器中,当用户点击屏幕时,检索触摸位置并检查该点是否未包含在弹出框中。
这只是一个例子来说明这一点:
- (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
}
}
}
我希望它会对你有所帮助。
答案 1 :(得分:2)
您可以在所有图层上都有一个不可见的图层,以便在子视图出现时检查触摸,并且您可以手动检查坐标是否在子视图中,然后只需从主视图中手动删除它。
您可以在此处查看解除键盘而不是删除视图的示例:
http://www.ke-cai.net/2011/05/tap-background-to-dismiss-keyboard-for.html