在Swift中以编程方式添加UIGestureRecognizer子视图
我目前有一个子视图创build并添加到ViewDidLoad()中的UIView。 我正在尝试使用UIGestureRecognizers来检测一个水龙头,并取消隐藏一个特定的button。 我目前的代码:
override func viewDidLoad() { super.viewDidLoad() architectView = CustomClass(frame: self.view.bounds) self.view.addSubview(architectView) let gestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTap:") gestureRecognizer.delegate = self architectView.addGestureRecognizer(gestureRecognizer) } func handleTap(gestureRecognizer: UIGestureRecognizer) { let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil)) self.presentViewController(alert, animated: true, completion: nil) }
handleTap()函数是一个简单的testing,看看是否被认可的水龙头。 这个代码在按下时不会触发UIAlert? 我错过了什么?
我在这里testing了你的代码,它确实工作。 不过,我想你可能会缺less将UIGestureRecognizerDelegate
协议添加到您的视图控制器。 见下文:
class ViewController: UIViewController, UIGestureRecognizerDelegate { var architectView = UIView() override func viewDidLoad() { super.viewDidLoad() architectView = UIView(frame: self.view.bounds) self.view.addSubview(architectView) let gestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTap:") gestureRecognizer.delegate = self architectView.addGestureRecognizer(gestureRecognizer) } func handleTap(gestureRecognizer: UIGestureRecognizer) { let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil)) self.presentViewController(alert, animated: true, completion: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
Swift 3基于Raphael Silva的版本代码答案:
import UIKit class ViewController: UIViewController, UIGestureRecognizerDelegate { var architectView = UIView() override func viewDidLoad() { super.viewDidLoad() architectView = UIView(frame: self.view.bounds) self.view.addSubview(architectView) let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.handleTap(gestureRecognizer:))) gestureRecognizer.delegate = self architectView.addGestureRecognizer(gestureRecognizer) } func handleTap(gestureRecognizer: UIGestureRecognizer) { let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert) alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.default, handler: nil)) self.present(alert, animated: true, completion: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
- 调用alloc init时,UIImagePickerController确实很慢
- 当iOS设备进入睡眠模式(屏幕变黑)时,有没有发现事件?
- UIViewController中的Xcode 5.1 UITableView – 自定义TableViewCell Outlets为零
- 如何自定义标签在Xamarin ios中的位置
- 如何使一个颜色在UIImage中透明
- iPhone 6和iPhone 6 Plus的UIImageView高度缩放显示模式
- SLComposeViewController Facebook发布为iOS而不是Facebook应用程序标识符
- 在iOS上检测字体是否为粗体/斜体?
- iOS上的数组的Swift金属并行计算