0

This question最接近描述我的問題,但我在一般過程中錯過了一些東西,答案最終進入「沒關係,我想出了一個不被描述的不同解決方案」。爲什麼我的導航欄控制器不能處理導航欄視圖上的touchesEnded事件?

在我的情況,我有一個導航欄及其控制器的XIB。對於類字段,我填寫了我的自定義類名稱。這裏是展示廈門國際銀行的截圖,因爲我覺得這應該是一個相對簡單和直接設置...

Navigation bar and its controller.

我想要什麼(在開始鏈接等)是針對touchesEnded事件,火災等等我可以做點什麼。這適用於「視圖」;我可以以編程方式寫入事件,設置斷點並查看該斷點。然而,我的更高層次的目標是在這一點上推出一個新的視圖到應用程序 - 我不應該在視圖的功能中做什麼,而且我不能做任何事情,因爲我的視圖無權訪問導航控制器(除非我做一些欺騙手段來檢索控制器,但我想幹淨地做這件事)。

即使它以編程方式爲視圖工作,touchesEnded事件也不會受到導航視圖控制器的影響。我將它設置給委託人,如下圖所示,我懷疑這可能只是我需要做的一部分。

I set the delegate of the Navigation Bar "view" to be the navigation controller.

所以,現在我已經設置委託,並已經看到touchesEnded事件被認爲打,爲什麼不上touchesEnded事件拿起我的導航欄視圖控制器?我錯了,而應該找出如何從導航欄的視圖中推出新視圖,因爲我已經看到那touchesEnded事件正在被擊中?這看起來像我應該在導航欄視圖的控制器中處理,但我無法獲得該控制器的touchesEnded事件命中。

謝謝!

+1

我想你不明白導航控制器的工作方式。你爲什麼不解釋你想要實現的目標?如果要推送到新的控制器,通常通過屬於導航控制器的視圖中的按鈕(或表格單元格)完成。您不直接使用導航欄執行任何操作,控制器會處理該操作。 – rdelmar

+0

很可能是這種情況。我想這樣做,當我點擊導航欄的一部分時,會推入一個新視圖 - 就像這個圖像中的about按鈕可能會導致(http://cdn2.raywenderlich.com/wp-content/uploads/ 2012/09 /屏幕截圖-2012年9月18日-AT-02年12月15日-AM-2.png)。不過,我不想顯示按鈕,而是希望它與背景圖像齊平,並使用導航欄的觸摸事件來啓動此實現。我可以不按照導航欄本身的按鈕做同樣的事嗎? – Danny

+0

我不確定是否可以這樣做(可能,但我從來沒有這樣做過)。你爲什麼推動新觀點的背景是什麼? – rdelmar

回答

1

從您的文章中不清楚,但它看起來像顯式地添加導航欄到您的應用程序,這是真的嗎?如果您的控制器嵌入在導航控制器中,則無需這樣做。您可以將視圖添加到導航欄,並將UIImage視圖添加爲子視圖。如果您將用戶交互設置爲開啓狀態,並將圖標視圖添加輕擊手勢識別器,則您應該能夠獲得所需的效果。

+0

我有點高興,從我的文章中不清楚,因爲它也不清楚,嘿!如果可能,這是我正在修改的預先存在的代碼,以獲得所需的設計。感謝您指出這些信息(正確)缺失,我知道我需要查看導航欄添加(或不添加)的位置,並且可能需要重新從頭開始才能嵌入控制器。如果你知道一個教程能夠比我的探索更好地展示如何做到這一點,請隨時分享它! – Danny

1

然後你必須重寫UINavigationBar,並覆蓋becomeFirstResponder,返回YES。

+0

謝謝,我會開始研究這種方法。 – Danny

+0

因此,我的導航欄視圖類確實是UINavigationBar的一個子項,因此重寫becomeFirstResponder以返回YES非常簡單。但是,即使進行了這種更改,設置的委託在點擊/點擊等時也不會觸及到touchesEnded。 – Danny

+0

不要設置任何委託,只需在同一個類中覆蓋touchesEnded:withEvent即可。 –

相關問題