【问题标题】:Extending Titanium Objects Doesn't Work on iOS扩展 Titanium 对象在 iOS 上不起作用
【发布时间】:2011-06-15 18:33:46
【问题描述】:

我想知道是否有人可以解释为什么钛视图代理的扩展在 iOS 上不起作用,但在 Android 平台上却完全正常。

Ti 移动 SDK:1.7.0RC1 和 1.6.2 iOS SDK:4.2 Android API:(谷歌 API)2.2

这是一个非常简单的用例:

var useCaseView = Ti.UI.createView({
layout: 'vertical',
right:0,
left:0, 
top:0,
height:200,
backgroundColor:'#fff'
});



var outputSwitch = Ti.UI.createSwitch({ 
value: true
}); 



outputSwitch.setTopValue = function(newValue) {
Ti.API.info('setTop' + newValue);
outputSwitch.top = newValue; 
};



outputSwitch.setTopValue(50);



useCaseView.add(outputSwitch);

我想要完成的是向交换机的视图代理添加一个方法(在本例中为 setTopValue)并在事后调用它。

这在 Android 上运行良好,但在 iOS 上 Ti.API.info 调用甚至没有被命中,这表明它只是忽略了该方法。

虽然这个例子很简短,但我真正想做的是“子类”开箱即用的 Titanium UI 组件,并添加一些常用方法供它们共享,以减少重复代码.

有谁知道 iOS SDK 是否会以某种方式禁止对它的“普通”UI 组件进行子类化?

【问题讨论】:

  • 你试过outputSwitch.prototype.fsetTopValue = function吗?
  • 过去我们在 Titanium 中使用代理对象的原型时遇到过问题。但是 outputSwitch.fsetTopValue = function 。 . .足以让它工作。原来使用“get/set”作为函数名的开头是个问题。

标签: javascript iphone android titanium


【解决方案1】:

我们在其他地方收到了答案(或者更确切地说是一种解决方法):

我发现以“get”或“set”为前缀的命名函数会导致问题。尝试重命名函数——Aaron Saunders

果然,重命名函数会使这段代码按预期工作。

http://developer.appcelerator.com/question/121114/extending-objects-not-working-on-iphone

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2016-11-29
    相关资源
    最近更新 更多