UIButton click不触发问题

问题描述:
今天做AD的ipad版展示功能点,为UIButton加入点击事件后,没有调用效果。

问题分析:
代码如下:

[button addTarget:self action:@selector(groupClicked:) forControlEvents:UIControlEventTouchUpInside];

- (void)objectClicked:(id)vSender
{
}

objectClicked方法没有被调用。查了下,addSubView等都没问题。突然想到父类是UIView,frame没有设定过。

问题解决:
设定frame:self.frame=CGRectMake(0,0,768,961);

一切安逸了。

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

Xcode设置代码提示的左花括号换行单独成行

Xcode代码提示生成源代码程序块默认格式如下,注意左花括号的位置:

if ( condition ) {
do ...
}

因为以前的使用习惯,我想让自动生成的左右花括号都单独成行,变成下面的样子:

if ( condition )
{
do ...
}

在Terminal里面,运行下面命令,然后重启Xcode:

defaults write com.apple.Xcode XCCodeSenseFormattingOptions -dict BlockSeparator "\n"

这个命令修改了~/Library/Preferences/com.apple.Xcode.plist,这是Xcode的配置文件

《爱情公寓》第一季

一幢并不奢华的公寓,两间普普通通的套房,却住着7个不同背景,不同身份,不同梦想的青年男女。无一例外,他们都是有故事的人,就在这栋爱情公寓里,每天都发生这看似平常却又乐趣十足的故事。时而搞笑、时而离奇、时而浪漫、时而感动。他们在一起,用嬉笑怒骂传达新一代年轻人的生活状态和价值观念。他们在一起,用连珠妙语擦出令人捧腹不已的精彩笑料和智慧火花。

《武林外传》

这是一个系列的戏说江湖的轻松喜剧。关中一个普通的小镇——七俠镇,这里有一家同福客栈。就是这间不起眼的江湖客栈,因缘巧合之下汇聚了一群性格各异又活泼搞怪的年轻人:武功高强但初入江湖的郭芙蓉(姚晨 饰)、客栈老板娘佟湘玉(闫妮 饰)、金盘洗手的神偷白展堂(沙溢 饰)、满腹经纶的吕秀才(喻恩泰 饰)、客栈厨师李大嘴(姜超 饰)等等。这群年轻人在同一屋檐下演绎了一幕幕经典的搞笑场面,在欢笑与眼泪中陪伴观众们一起渐渐成长。