如何用点击手势关闭 SDCAlertView?
Posted
技术标签:
【中文标题】如何用点击手势关闭 SDCAlertView?【英文标题】:How to dismiss SDCAlertView with tap gesture? 【发布时间】:2014-09-18 09:46:32 【问题描述】:为了显示警报,我使用SDCAlertView(UIAlertView 的克隆)。我想通过点击 UIActionSheet 等屏幕来解除警报。
【问题讨论】:
【参考方案1】:与UIAlertView
不同,SDCAlertView
作为视图添加到视图层次结构中。这意味着您可以简单地将轻击手势识别器添加到SDCAlertView
的超级视图,该视图调用[SDCAlertView dismissWithClickedButtonIndex:animated:]
。
【讨论】:
现在如何使用 SDCAlertController? 你可以尝试将它添加到视图控制器的视图中,但这可能不是你想要的【参考方案2】:我找到了一种方法。与 ios 7+ 兼容,但在 8+ 上可通过点击关闭。
class SmartAlert
static var backroundWindow: UIWindow!
static var alertController: SDCAlertController!
class func showAlertWithTitle(title: String!, message: String!, actionTitle: String)
if (iOS8)
self.backroundWindow = UIWindow(frame: UIScreen.mainScreen().bounds)
self.backroundWindow.backgroundColor = UIColor.clearColor()
self.backroundWindow.rootViewController = EmptyViewController()
self.backroundWindow.windowLevel = UIWindowLevelAlert
self.backroundWindow.makeKeyAndVisible()
self.alertController = SDCAlertController(title: title, message: message, preferredStyle: .Alert)
self.alertController.addAction(SDCAlertAction(title: actionTitle, style: .Default, handler:
(_) -> Void in
self.backroundWindow = nil
))
self.alertController.presentWithCompletion(nil)
class func dismissAlert()
self.alertController.dismissWithCompletion
self.backroundWindow = nil
class EmptyViewController: UIViewController
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
SmartAlert.dismissAlert()
override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent)
if motion == UIEventSubtype.MotionShake
SmartAlert.dismissAlert()
【讨论】:
以上是关于如何用点击手势关闭 SDCAlertView?的主要内容,如果未能解决你的问题,请参考以下文章