是否有可能檢測一個觸摸在UINavigationItem?UINavigationItem:檢測觸摸
我想在用戶點擊它時在UINavigationItem上創建一個小動畫。
換句話說:
- 我的標題中包含了太多的文字,所以我必須截斷他們
- 我希望用戶能夠讀取完整的標題文本時,他/她按下導航項目
要做到這一點,我需要:
- 檢測觸摸
- 動畫聖環/文(我能有一個計時器動畫此,但是我想知道是否已經有一個內置的功能在iOS中 - 你知道的話)
是否有可能檢測一個觸摸在UINavigationItem?UINavigationItem:檢測觸摸
我想在用戶點擊它時在UINavigationItem上創建一個小動畫。
換句話說:
要做到這一點,我需要:
UINavigationItem
直接繼承NSObject
作爲johnryu在評論中聲明,但不是在導航欄中顯示標題,而是通過添加UIView
代替標題來執行更復雜的操作。
這個視圖可以由一個UILabel組成,它將顯示實際的標題和一個透明的按鈕。
透明按鈕可以有一個動作,觸發一個帶有全文的彈出窗口,用於「觸及」事件或「向內觸摸」。
或者您可以添加到該視圖一個簡單的輕擊手勢識別器。
嘗試將自定義titleView分配給UINavigationItem。使它成爲一個帶有標籤的UIView,其中您將獲得文本。在默認狀態下,標籤的大小與其超級視圖的大小相同。確保UIView的clipsToBounds
設置爲YES/true。
將UITapGestureRecognizer附加到標籤或視圖以切換到「動畫」狀態並返回。
當進入動畫狀態時,使標籤足夠寬,以便爲整個字符串留出足夠的空間並在容器內爲其移動設置動畫,可以使用NSString的boundingRectWithSize:options:attributes:context:
來計算合適的寬度。
然後只需添加一個動畫,其中標籤向左移動直到其右端可見,如果重複則最好。
UINavigationItem不是UIView子類,它直接從NSObject繼承(如https://developer.apple.com/reference/uikit/uinavigationitem?language=objc中所示)。因此,您不能按下它,因爲它不是UI的可見元素。 – johnyu
請爲您正在使用的語言添加標籤。相關的問題可能有所幫助:http://stackoverflow.com/questions/26287322/recognize-tap-on-navigation-bar-title和http://stackoverflow.com/questions/2077025/uinavigationbar-touch – shallowThought