问题描述
||
我想知道是否有人可以解释为什么Titan View代理的扩展在iOS上不起作用,而在Android平台上却可以正常工作。
Ti Mobile SDK:1.7.0RC1和1.6.2
iOS SDK:4.2
Android API:(Google 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组件进行子类化?
解决方法
我们在其他地方收到了答案(或更确切地说,解决方法):
我发现以\'get \'或\'set \'为前缀的命名功能会引起问题。尝试重命名功能-Aaron Saunders
果然,重命名该函数会使此代码按预期工作。
http://developer.appcelerator.com/question/121114/extending-objects-not-working-on-iphone