2015-09-10 28 views
3

我按照這個tutorial,一切工作正常。我遇到的唯一問題是我無法弄清楚如何檢測按鈕被按下的時間?如何在tvOS中添加檢測按鈕?

在此先感謝

+0

你讀過[文件](https://developer.apple.com/library/prerelease/tvos/documentation/General /Conceptual/AppleTV_PG/DetectingButtonPressesandGestures.html)? –

+0

是的@DanielStorm,我現在有一個'pressed的壓倒'的功能,從來沒有得到一些reasom調用 –

回答

4

作者這裏的教程,增加TVML基於交互性的應用程序的方法是使用的addEventListener有問題的DOM元素上。您可以通過在創建過程中保留對其的引用,或者使用getElementById或其他類似的JavaScript DOM技術來找到DOM元素。另外,我應該提到我已經爲所提到的教程添加了「第2部分」,其中包括這一點,因爲它是主要關注點。

下面是如何在JS中執行此操作的示例,假設myDOMElement是將您的按鈕作爲DOM元素引用的變量。

myDOMElement.addEventListener("select", function() { alert("CLICK!") }, false); 

我對教程當然有更多的信息,所以請隨時聯繫check that out

+1

謝謝@jameson!完美的作品,謝謝你的教程,以及:-) –

+0

我看到的模板沒有它,但你可以肯定地添加一個事件監聽器'play'來檢測正在按下的播放/暫停按鈕。 – Nick

+0

你好,如果我的文檔有兩個按鈕,確定並取消,我如何檢測點擊其中的一個?新的JS – Wingzero

2

按鈕按鈕類似於UITouch事件。查看UIResponder頭中的UIPressEvent回調。 UIViewControllers是響應鏈的一部分,這樣你就可以添加您的視圖控制器類似這樣的回調:

- (void)pressesEnded:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event { 

    UIPress *anyPress = [presses anyObject]; 
    // handle press event 

} 
+0

謝謝!我現在有這個功能沒有被調用,你知道爲什麼嗎? –

+0

'覆蓋FUNC pressesBegan(機:設置,withEvent事件:UIPressesEvent){ 設按= UIPress() 中止() }' –

+0

我想處理一個UIButton對與該方法tvOS觸摸,但這是行不通的。如果它不攔截按鈕的觸摸,因爲我使用UIPressEventSelect來選擇一個按鈕? – coernel

0

您可以添加動作一個UIButton相同的iOS,根據Apple Docs

的UIButton類的實例在觸摸屏上實現一個按鈕。按鈕攔截觸摸事件,並在點擊時向目標對象發送操作消息 。設置目標和 操作的方法是從UIControl繼承的。該課程提供 設置按鈕的標題,圖像和其他外觀屬性的方法。 通過使用這些訪問器,您可以爲每個按鈕狀態指定一個不同的外觀 。

0

您不應該在tvOS上使用「UIControlEvents.TouchUpInside」,因爲這樣做不符合您的預期:您可能希望使用「UIControlEvents.PrimaryActionTriggered」。

TouchUpInside是由實際的觸摸觸發的,這實際上並不是你想要的:如果你想讓Select按鈕在遙控器上按下來觸發你的按鈕,你應該使用PrimaryActionTriggered。

2
let playPauseRecognizer = UITapGestureRecognizer(target: self, action: "playPauseRecognizer:") 
playPauseRecognizer.allowedPressTypes = [NSNumber(integer:UIPressType.PlayPause.rawValue)] 

    view.addGestureRecognizer(playPauseRecognizer) 
0

斯威夫特3 @傑斯 - 鮑爾斯代碼版本:

override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) { 
    let anyPress: UIPress? = presses.first 
} 
相關問題