初學ios開發的童鞋可能會遇到各式奇怪的問題,這篇博文本貓就為大家介紹其中乙個」怪異」問題.
該問題很好重現:
1.使用xcode新建乙個最簡單的單vc工程,然後在storyboard中新建乙個destvc.然後從預設建立的vc(姑且稱之為initvc)拉一條segue到destvc,並設定該segue id為」todestvc」
2.開啟initvc類,只新增2個方法:
override func touchesbegan(_ touches: set, with event: uievent?)
performsegue(withidentifier: "todestvc", sender: nil)
}
如果不想看長篇大論,可以直接看最後這一段話:
說的很清楚吧,所以如果不用segue跳轉,而是用present跳轉到destvc,現象是一樣的.
知道了原因如果避免這一」正常」的行為呢?很簡單,一種辦法是在initvc的prepare方法中關閉initvc.view的互動:
override func prepare(for segue: uistoryboardsegue, sender: any?)
}
另一種方法則是在destvc中過載next屬性,將其置為nil,斷開responder chain即可:
override
var next: uiresponder?
iOS 中事件的響應鏈和傳遞鏈
ios事件鏈有兩條 事件的響應鏈 hit testing事件的傳遞鏈 在ios中只有繼承uiresponder的物件才能夠接收並處理事件,uiresponder是所有響應物件的基類,在uiresponder類中定義了處理上述各種事件的介面。我們熟悉的uiapplication uiviewcontr...
響應者鏈的事件傳遞過程
響應者鏈的事件傳遞過程一 hittext方法 1 hittext方法在 乙個事件傳遞給乙個控制項的時候,控制項就會呼叫這個方法 2 hittext 作用 尋找到最合適的 view 3 hittext方法 1 判斷視窗能不能處理事件 如果不能,意味著視窗不是最合適的 view 而且也不會去尋找比自己更...
iOS 響應者鏈,事件的傳遞
先將事件物件由上往下傳遞 由父控制項傳遞給子控制項 找到最合適的控制項來處理這個事件。呼叫最合適控制項的touches 方法 如果呼叫了 super touches 就會將事件順著響應者鏈條往上傳遞,傳遞給上乙個響應者 接著就會呼叫上乙個響應者的touches 方法 如果當前這個view是控制器的v...