2016-11-22 73 views
0

此代碼一直運行到SDK的最新更新之一。現在它只適用於iOS - 而不適用於Android(測試的API版本19-23)。未觸發帶有editable =「false」的textfield的點擊處理程序

合金片段:

<ScrollView id="form" onClick="clickHandler" onFocus="clickHandler"> 
    : 
    : 
<View class="formRow" id="clubRow1"> 
    <Label id="label_club" /> 
    <TextField id="club1" class="club" editable="false" bubbleParent="true"></TextField> 
</View> 

控制器片斷:

function clickHandler(e){ 
    console.trace('profile.clickHandler: ' + (e.source.id || 'no id!')); 
    if(e && e.source){ 
     : 
     : 

我用一個頂級點擊處理器(結果是相同的,如果我對<TextField>單擊處理程序)。如果我刪除editable="false",則觸發點擊處理程序。

我使用此功能向用戶顯示可以從中選擇的值列表(可以從具有搜索功能的列表視圖或簡單的選項列表中選擇,如果只是幾個值)。

有什麼辦法可以再次獲得這個功能嗎?這是SDK中的錯誤 - 或者只是我做了一些尷尬的事情來獲得功能?

環境:

Operating System 
    Name      = Mac OS X 
    Version      = 10.12.1 
    Architecture    = 64bit 
    # CPUs      = 8 
    Memory      = 16.0GB 

Node.js 
    Node.js Version    = 4.5.0 
    npm Version     = 2.15.9 

Appcelerator CLI 
    Installer     = 4.2.7 
    Core Package    = 5.5.1 

Titanium CLI 
    CLI Version     = 5.0.9 
    node-appc Version   = 0.2.31 

Titanium SDKs 
    5.5.0.GA 
    Version     = 5.5.0 
    Install Location   = /Users/jda/Library/Application Support/Titanium/mobilesdk/osx/5.5.0.GA 
    Platforms     = android, mobileweb, iphone 
    git Hash     = 44a2e3f 
    git Timestamp    = 09/13/16 12:38 
    node-appc Version   = 0.2.36 
+0

也許在textField中添加「touchEnabled」會有幫助嗎? –

+0

感謝您的建議@OutofOrbit。該屬性默認爲「true」 - 並且明確設置它並不會改變任何內容 - 不幸的是...... –

回答

0

我被另一個開發上Ti.Slack(@baharroth),這顯然是a known bug通知。只需將其添加到其他人即可找到。

它可以通過使用例如, onTouchEndonSimpleTouch。然而,更好的解決方案(在我看來)是爲<TextField>設置focusable="false"editable="true" - 但僅適用於Android。對於iOS它仍然具有隻是editable="false"

因此,要實現這一點的最好辦法是真的很喜歡這樣的:

在app.tss:

".pickList[platform=android]": { 
    focusable:false, 
    editable:true 
} 
".pickList[platform=ios]": { 
    editable:false 
} 

在所說的合金標記文件:

<TextField id="country" class="pickList" bubbleParent="true"></TextField> 

這似乎工作正常(對於我的情況,任何方式)。

相關問題