不同iOS SDK对事件调用支持不同

问题描述:

今天做AD杂志(iPad)LEGO功能点,需要在UIScrollView中让UIView移动。加了正确代码,结果却不好。

结果是这样的:点击不移动,运行touchesBegan和touchesEnded,一切正常。但是点下移动释放,touchesBegan会100%运行,然后三两个touchesMoved,move效果也跟不上,touchesEnded也没有触发。

在UIView用了如下代码实现:

#pragma mark --

#pragma mark touch

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

NSLog(@"touchesBegan");

UITouch *touch = [touches anyObject];

UIScrollView *parentView = (UIScrollView *)[[[touch view] superview]superview];

parentView.scrollEnabled=NO;

// Calculate and store offset, and pop view into front if needed

CGPoint pt = [[touches anyObject] locationInView:self];

startLocation = pt;

}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

NSLog(@"touchesMoved");

// Calculate offset

CGPoint pt = [[touches anyObject] locationInView:self];

float dx = pt.x - startLocation.x;

float dy = pt.y - startLocation.y;

CGPoint newcenter = CGPointMake(self.center.x + dx, self.center.y + dy);

// Bound movement into parent bounds

float halfx = CGRectGetMidX(self.bounds);

newcenter.x = MAX(halfx, newcenter.x);

newcenter.x = MIN(self.superview.bounds.size.width - halfx, newcenter.x);

float halfy = CGRectGetMidY(self.bounds);

newcenter.y = MAX(halfy, newcenter.y);

newcenter.y = MIN(self.superview.bounds.size.height - halfy, newcenter.y);

// Set new location

self.center = newcenter;

}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

NSLog(@"touchesEnded");

UITouch *touch = [touches anyObject];

UIScrollView *parentView = (UIScrollView *)[[[touch view] superview]superview];

parentView.scrollEnabled=YES;

}

问题分析:

最后一段一段检查,应该是parentView.scrollEnabled=NO;这句有问题。

可能是iOS的一个Bug。

问题解决:

在另一台Mac上做了一个Demo,一切OK。细细检查,唯一不同就是SDK版本不一样。出问题的那台是4.1,而做Demo一切OK的那台是4.2.1。把出问题的代码copy给4.2.1,一切安逸了。

不同iOS SDK对缺少文件后缀名图片的调用支持不同

问题描述
今天做AD杂志(iPad)特色点功能,一段相同代码转移到另一台机器,执行结果却不一样。

问题分析
代码、项目检查后完全一样,执行效果却不同,也没有报错。
因为结果是Button图片没有显示,所以一步一步检查,搜索到UIImage在转移后没有图片信息,相关代码如下:

#define PHOTO_NAME @"point"

[UIImage imageNamed:PHOTO_NAME];

以上代码实现了读入项目中point.png图片文件。

问题解决
图片后缀没有给全,改为:

#define PHOTO_NAME @"point.png"

图片出现了,问题解决了。

事后分析,估计是不同SDK对代码的支持不同。所以养成编程好习惯能省许多事情和时间。

PS:
转移前SDK:4.2.1
转移后SDK:4.1

NSDictionary读plist文件顺序问题

问题描述
这些天在做AD,NSDictionar读取出来的顺序不是plist文件中的顺序。

问题分析
试了各种库和方法,无效,网上搜了一些不算解决办法的方法 。

问题解决
(1) Keep an array of keys along with the dictionary. Then loop through the array and use the keys to get the values. (You'll have to add your own checks to keep the same key from appearing in the array twice.)
1,简单说来就是,把nsdictionary的所有key组成的nsarray按自己的要求排序,然后根据这个key组成的array来获取对应的value的array。key的array不要扔掉,每次要按顺序获取值的时候都需要它。

(2)You could keep an array of custom objects, one custom object for each pair (give the object .key and .value properites) . That's a very object-oriented way, but you lose the ability to easily find the value for a key (you have to loop through the array.)
2,不直接用nsdictionary,而是用一个nsarray,里面每个object都是一个只有一对key-value的nsdictionary。这个方法的缺点是,找某个value或者key会变得很麻烦,需要遍历。

(3)You could keep two arrays of strings, one for keys and one for values.
to find a value for a key, you just use
keyIndex = [myKeys indexOfObject: keyIWant];
keyValue = [myValues objectAtIndex: keyIndex];
3,不用nsdictionary,而是用两个对应的nsarray。相互调用,分别做key和value。

Icon for iOS

App Store Icon

  • 512x512 (scaled down to 175x175 for display in the store)

Application Icon

  • 114x114 (iPhone 4)
  • 57x57 (older iPhones)
  • 72x72 (iPad)

Spotlight Search Results and Settings Icon

  • 58x58 (iPhone 4)
  • 50x50 (Spotlight results for iPad)
  • 29x29 (settings for iPad and older iPhones)

Document Icon

This is a new icon type in iOS 4. It’s used if your app creates a custom document type. The iPad uses the document icon in two different sizes.

  • 320x320 (iPad)
  • 64x64 (iPad)
  • 44x58 (iPhone 4)
  • 22x29 (older iPhones)

iPad精选软件

因91助手白苹果以及垃圾问题,现在弃用,现整理如下:

大型游戏:

生化危机Resident Evil 4 iPad edition

Real Soccer 2010 HD 实况足球2010

文明:变革Civilization Revolution for iPad

阿凡达 James Cameron's Avatar for iPad

真实赛车Real Racing HD

疯狂赛车Racing Mania HD

钢铁侠2 for iPad (官方中文版)

美国职棒球比赛 At Bat 2010 for iPad

垂钓之王(官方中文版) Fishing Kings HD

Ace Tennis 2010 HD Online 网球精英赛2010 在线

Hero Of Sparta HD 斯巴达英雄

斯巴达英雄2(官方中文版)Hero of Sparta 2 HD

红色警戒 for iPad

地牢猎手 Dungeon Hunter HD

现代战争Modern Conflict HD

劲爆美式橄榄球11 MADDEN NFL 11 for iPad

N.O.V.A. - Near Orbit Vanguard Alliance HD

一起高尔夫2(官方中文版) Let's Golf! 2 For iPad

经典游戏:

愤怒的小鸟 Angry Birds HD*

航空指挥官Flight Control HD*

Plants vs. Zombies HD 植物大战僵尸*

吃豆人PAC-MAN for iPad

Worms HD 百战天虫

百战天虫2:末日浩劫Worms 2: Armageddon

Shredder Chess for iPad 国际象棋

Spider Solitaire HD 蜘蛛纸牌

疯狂停车 Parking Mania HD

发光曲棍球Glow Hockey for iPad

New York 3D Rollercoaster Rush HD 过山车

镜之边缘 Mirror's Edge for iPad

Slayer Pinball Rocks HD 弹珠台

Mondo Solitaire for iPad 蒙多接龙

PuzzleManiak HD 益智游戏合辑

游戏改编:

星际贪吃蛇 Snake Galaxy HD

宝箱计划 Know How 2 HD*

Minigore HD

Labyrinth 2 HD 迷宫滚球2

Geometry Wars Touch for iPad 几何战争

多人弹珠 MultiPong for iPad

PartyPlace - Marble Mixer for iPad 互动弹珠

新酷游戏:

Amateur Surgeon iPad Edition 疯狂外科医生

我画你猜Charadium for iPad

蔬菜武士 Veggie Samurai HD

玻璃塔Glass Tower HD

猴子罗汉塔 Tiki Towers for iPad*

Ancient Frog HD 青蛙捕食*

玩具乐园Toy Physics HD

Touchgrind HD 模拟滑板

锁链专家 Chain Link HD

Geared HD 驱动齿轮

星噬Osmos HD

桌上足球 Foosball HD

Slideshot XL for iPad

反引力行走 Soosiz HD

新酷效果:

iBeer Keg HD 爱啤酒

Barbecue HD 真实烧烤

iFish Pond HD 养鱼塘*

新酷应用:

Alice for the iPad 爱丽丝

听音识曲 SoundHound*

应用软件:

iWiki for iPad 维基百科

QQ HD*

天气预报 Weather Pro for iPad*

Star Walk for iPad 星际漫步

星空 Starmap HD

文件浏览Files HD*

指南针Compass HD

智能时钟Night Stand HD

SpaceTime for iPad

Pianolo HD for iPad 钢琴模拟

FingerPiano for iPad 手指钢琴

关于convert Flash to iPhone or iPad

一直有人说flash直接能转成iPhone或iPad,最近vin也说可以。

在此,再次说明以下,flash转iOs是可以的,不过只限于简单的程序。比如一个正方形上下动动什么的。如果像现在iPhone上的游戏这么复杂的,都不行。如果flash library里的东西比较多,那么Flash CS5 publish的时候会当掉。

以下是CS5转iPhone的官方方法:
http://help.adobe.com/en_US/as3/iphone/WS789ea67d3e73a8b2-240138de1243a7725e7-8000.html

====================================

还有一个第三方的插件,但是之前我试了无效。最近出来新版本:ELIPS Studio 4,最近测试了一下。此插件号称可以把flash转成Xcode项目,我测试下来确实可以转换,但是用Xcode打开发布就会出现错误,丢失文件,而且里面的架构已经不是iPhone的,估计能行也有性能上的隐患。

在这里给出此插件连接:http://developer.openplug.com/

如有发布成功的兄弟请通知我:)