2017-01-16 219 views
1

是否有可能檢測一個觸摸UINavigationItemUINavigationItem:檢測觸摸

我想在用戶點擊它時在UINavigationItem上創建一個小動畫。

換句話說:

  • 我的標題中包含了太多的文字,所以我必須截斷他們
  • 我希望用戶能夠讀取完整的標題文本時,他/她按下導航項目
  • 要做到這一點,我需要:

    1. 檢測觸摸
    2. 動畫聖環/文(我能有一個計時器動畫此,但是我想知道是否已經有一個內置的功能在iOS中 - 你知道的話)
+0

UINavigationItem不是UIView子類,它直接從NSObject繼承(如https://developer.apple.com/reference/uikit/uinavigationitem?language=objc中所示)。因此,您不能按下它,因爲它不是UI的可見元素。 – johnyu

+0

請爲您正在使用的語言添加標籤。相關的問題可能有所幫助:http://stackoverflow.com/questions/26287322/recognize-tap-on-navigation-bar-title和http://stackoverflow.com/questions/2077025/uinavigationbar-touch – shallowThought

回答

0

UINavigationItem直接繼承NSObject作爲johnryu在評論中聲明,但不是在導航欄中顯示標題,而是通過添加UIView代替標題來執行更復雜的操作。
這個視圖可以由一個UILabel組成,它將顯示實際的標題和一個透明的按鈕。
透明按鈕可以有一個動作,觸發一個帶有全文的彈出窗口,用於「觸及」事件或「向內觸摸」。
或者您可以添加到該視圖一個簡單的輕擊手勢識別器。

0

嘗試將自定義titleView分配給UINavigationItem。使它成爲一個帶有標籤的UIView,其中您將獲得文本。在默認狀態下,標籤的大小與其超級視圖的大小相同。確保UIView的clipsToBounds設置爲YES/true。

將UITapGestureRecognizer附加到標籤或視圖以切換到「動畫」狀態並返回。

當進入動畫狀態時,使標籤足夠寬,以便爲整個字符串留出足夠的空間並在容器內爲其移動設置動畫,可以使用NSString的boundingRectWithSize:options:attributes:context:來計算合適的寬度。

然後只需添加一個動畫,其中標籤向左移動直到其右端可見,如果重複則最好。

+0

是否有可能添加一個UIView到UINavigationItem? – mm24

+0

不,你可以添加一個新的UIView(作爲子視圖)到另一個UIView。 UINavigationItem不是UIView。 – johnyu