按鈕超出父控制項後無法響應點選的解決方法

2021-07-30 06:15:53 字數 512 閱讀 6289

func hittest(_ point: cgpoint, with event: uievent?) -> uiview?
這個方法返回的view為處理事件最合適的view。

當事件傳遞給主視窗之後,這個事件會從父檢視一層層傳遞給子檢視:如果父檢視中沒有子檢視或者子檢視不能響應事件(isuserinteractionenabled == false),則父檢視為處理事件最合適的view,否則繼續將事件傳遞給子檢視。

當子檢視超出了父檢視時,超出部分是不能響應事件的,原因是觸控點不在父檢視中,所以無法正確返回子檢視作為處理事件合適的view。所以我們就需要在父檢視中重寫hittest方法,返回子檢視:

override func hittest(_ point: cgpoint, with event: uievent?) -> uiview? }}

return view

}

另外,這裡有一篇很詳細的ios事件的傳遞和響應機制的原理

超出父控制項怎麼才能點選

首先 我們先總結一下控制項不能互動的原因有哪些?1.控制項的使用者互動被關閉了 userinteractionenable no 使用者互動 2.控制項隱藏了 hidden yes 3.控制項的透明度 alpha 0.01 4.父控制項的使用者互動關了 子控制項也就不能響應了 5.如果子控制項,超出...

UWP鎖 解屏後無法響應操作

uwp的unity專案,在pc上執行時,如果鎖屏 手動或自動 再解鎖,遊戲畫面和進度正常,但是無法進行滑鼠 鍵盤或手柄的操作。這bug在很多線上的unity專案中存在。經過測試,正常的切換和切回操作,該狀態會成對 啟用 非啟用 觸發,同時成對觸發的,還有window.current.corewind...

Tab控制項下子對話視窗的按鈕不響應訊息

1 遇到問題 tab控制項建立兩個新頁面程式,再為每個頁面建立單獨的類,在主對話方塊新增兩個對話窗成員變數 cdialog m page1 cdialog m page2 這兩個對話方塊已設定為child型和無邊框型。tab頁面的切換沒問題,問題是我在這兩個子對話方塊上新增了按鈕後,為按鈕在各自的類...