2011-09-11 68 views
3

我正在開發中的Appcelerator的應用iOS應用程序,我得到了一個表用戶。 當我點擊用戶時,它會打開配置文件,但我也希望用戶只需點擊並按住2秒即可複製名稱。禁止click事件不放

這兩個事件分別罰款權,但現在工作自來水後按住click事件觸發來。如何防止輕按後點擊事件觸發?

// Set the timeout 

    var holdTime = 500, timeout; 

    // Create the table touch start event listener 

    table.addEventListener('touchstart', function(e) { 

     // Set the selected user id 

     var itemValue = e.row.value_full; 

     // Define the function 

     timeout = setTimeout(function(e) { 

      // Create the fade out animation 

      var fadeOut = Titanium.UI.createAnimation({ 

       curve: Ti.UI.ANIMATION_CURVE_EASE_IN_OUT, 
       opacity: 0, 
       duration: 1000 

      }); 

      // Create the loading screen 

      var copied = UI_messages.showFlash({label : 'Copied!'}); 

      // Add the loading screen 

      win.add(copied); 

      // Save value to clipboard 

      Titanium.UI.Clipboard.setText(itemValue); 

      // Fade the message out 

      copied.animate(fadeOut); 

     }, holdTime); 

    }); 

    // Create the event listener for touch move 

    table.addEventListener('touchmove', function() { 

     // Clear the timeout 

     clearTimeout(timeout); 

    }); 

    // Create the event listener for touch move 

    table.addEventListener('touchend', function(e) { 

     // Clear the timeout 

     clearTimeout(timeout); 

    }); 

回答

2

我也遇到過這個問題。我使用的解決方案並不是非常漂亮,但它是我發現在觸摸並保持後抑制觸摸事件的唯一有效方式。

我能找到

唯一可行的解​​決方案是在一個全局命名空間創建一個bool變量。在你setTimeout功能,bool的值更改爲true,表明發生了觸摸和保持。

在該行的onClick事件事件中,首先檢查全局變量,看看是否已經創建了觸摸並保持事件 - 如果有,從onClick事件返回。當觸摸並持有發生時,這將有效地禁用您的點擊事件。

記住觸摸保持功能結束後,全局變量設置爲false

+0

好主意!當我打開窗戶時,我嘗試了它,並且觸發了幾次。 –