日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios hitTest及扩展---分解ZFPlayer

發布時間:2025/4/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios hitTest及扩展---分解ZFPlayer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

核心1. 介紹

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event point :

在接收器的局部坐標系(界)中指定的點。 event : 系統保證調用此方法的事件。

如果從事件處理代碼外部調用此方法,則可以指定nil。 returnValue : 視圖對象是當前視圖和包含點的最遠的后代。

如果點完全位于接收方的視圖層次結構之外,則返回nil。

目的在于 :?在視圖的層次結構中尋找一個最適合的 view 來響應觸摸事件。

?

核心2.

調用順序:touch -> UIApplication -> UIWindow -> UIViewController.view -> subViews -> ....-> 合適的view

事件傳遞順序:view -> superView ...- > UIViewController.view -> UIViewController -> UIWindow -> UIApplication -> 事件丟棄

?

擴展1. subview超出fatherView的bounds仍然需要響應點擊事件

?

?

/*

?Case1: 點擊button1 & button2 不在self的區域都有效

?*/

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

?? ?

? ? //1.判斷自己能否接收事件

? ? if(self.userInteractionEnabled == NO || self.hidden == YES || self.alpha <= 0.01) {

? ? ? ? return nil;

? ? }

?? ?

? ? // 這里無需判斷point是否在父View的bounds內,因為middleButton和rightButton部分區域超出的父View

? ? for (UIView *subview in [self.subviews reverseObjectEnumerator]) {

? ? ? ? CGPoint convertedPoint = [subview convertPoint:point fromView:self];

? ? ? ? UIView *hitTestView = [subview hitTest:convertedPoint withEvent:event];

? ? ? ? if (hitTestView) {

? ? ? ? ? ? return hitTestView;

? ? ? ? }

? ? }

? ? return self;

?? ?

}

?

?

?

/*

?Case2: 點擊button1不在self的區域《無》效

? ? ? ? 點擊button2不在self的區域《有》效

?*/

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

?? ?

? ? //1.判斷自己能否接收事件

? ? if(self.userInteractionEnabled == NO || self.hidden == YES || self.alpha <= 0.01) {

? ? ? ? return nil;

? ? }

?

? ? CGPoint newPoint = [self convertPoint:point toView:button2];

? ? if ([button2 pointInside:newPoint withEvent:event]) {

? ? ? ? return button2;

? ? }

?? ?

? ? return [super hitTest:point withEvent:event];

}

?

參考資料:https://blog.csdn.net/qq_18505715/article/details/78411052

?

?

轉載于:https://www.cnblogs.com/madaha/p/9685180.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的ios hitTest及扩展---分解ZFPlayer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。