[iOS]解決:子視圖超出父視圖不響應問題


★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公眾號:山青詠芝(let_us_code)
➤博主域名:https://www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: https://www.cnblogs.com/strengthen/p/13805736.html
➤如果鏈接不是山青詠芝的博客園地址,則可能是爬取作者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持作者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

熱烈歡迎,請直接點擊!!!

進入博主App Store主頁,下載使用各個作品!!!

注:博主將堅持每月上線一個新app!!!

Swift:

 1     override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
 2         var view = super.hitTest(point, withEvent: event)
 3         if view == nil {
 4             for subView in self.subviews {
 5                 let tp = subView.convertPoint(point, fromView: self)
 6                 if CGRectContainsPoint(subView.bounds, tp) {
 7                     view = subView
 8                 }
 9             }
10         }
11         return view
12     }

測試:

 1    override func viewDidLoad() {
 2         super.viewDidLoad()
 3        let costemView = CustomView(frame: CGRectMake(100, 100 , 100, 100))
 4         self.view.addSubview(costemView)
 5         
 6         let button = UIButton(frame: CGRectMake(-20, -20, 40, 40))
 7         costemView.addSubview(button)
 8         button.backgroundColor = UIColor.lightGrayColor()
 9         button.addTarget(self, action: #selector(aaa), forControlEvents: .TouchUpInside)
10     }
11     
12     func test() -> Void {
13         print("swift")
14     }

 Objective-C:

 1 - (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event {
 2     UIView * view = [super hitTest:point withEvent:event];
 3     if (view == nil) {
 4         for (UIView * subView in self.subviews) {
 5             // 將坐標系轉化為自己的坐標系
 6             CGPoint tp = [subView convertPoint:point fromView:self];
 7             if (CGRectContainsPoint(subView.bounds, tp)) {
 8                 view = subView;
 9             }
10         }
11     }
12     return view;
13 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM