使用editable =" false"

时间:2016-11-22 08:06:28

标签: android onclick appcelerator

此代码一直有效,直到SDK的最新更新之一。现在它只适用于iOS - 而不适用于Android(经过测试的API版本19-23)。

Alloy snippet:

<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>

Controller snippet:

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

1 个答案:

答案 0 :(得分:0)

Ti.Slack(@baharroth)的另一位开发人员告诉我,这显然是a known bug。只需将其添加到此处供其他人查找。

可以通过使用例如onTouchEndonSimpleTouch。但是,更好的解决方案(在我看来)是为focusable="false"设置editable="true"<TextField> - 但仅适用于Android。对于iOS,它仍然必须是editable="false"

所以实现这个的最好方法就是这样:

在app.tss中:

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

在Alloy标记文件中:

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

这似乎工作正常(对于我的情况,无论如何)。