小编sam*_*tte的帖子

PlaySystemSound静音开启

我知道,我必须将其设置AudioSession为"播放"类别,即使静音开关打开也允许音频.这就是我的工作,但开关打开时声音仍然静音.

 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
 AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);

 SystemSoundID soundID;
 NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];    

 AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
 AudioServicesPlaySystemSound (soundID);
Run Code Online (Sandbox Code Playgroud)


编辑:顺便说一句,该应用程序是一个声音垫.播放声音是该应用程序的唯一目的.以下是Apple Doc对此的说法:

将此类别用于音频播放最重要的应用程序.即使屏幕已锁定且Ring/Silent开关设置为静音,您的音频也会播放.


编辑2:打开静音开关,声音甚至无法通过耳机播放.我知道用户是王道.我知道静音开关有它的用途.这不是问题.我试图得到一个答案,即将AudioSession类别设置为kAudioSessionCategory_MediaPlayback没有预期的结果.


编辑3:按照Jonathan Watmough的建议,我设置了AudioServices kAudioServicesPropertyIsUISound房产,但仍然没有运气.我错过了什么吗?

// set the session property
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);

// creates soundID
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];    
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);

// Jonathan Watmough suggestion
UInt32 flag = 0;
AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(UInt32), &soundID, sizeof(UInt32), &flag);

AudioServicesPlaySystemSound (soundID);
Run Code Online (Sandbox Code Playgroud)

iphone audio audiosession

8
推荐指数
1
解决办法
5248
查看次数

moveRowAtIndexPath不刷新单元格的内容

iOS 5终于添加了一个moveRowAtIndexPath:toIndexPath:方法UITableView.问题是,调用它只会移动行,它不会更新/重绘它.这样做的唯一方法似乎是找到单元格并直接调用setNeedsDisplay.但这很棘手,因为你永远不知道细胞是否已被移动.

我也无法调用reloadRowsAtIndexPaths:,因为我不允许将2个动画应用于同一个beginUpdates-endUpdates块内的单个行.

我可以想到一些可行的解决方法,比如将整个事物分成2个动画块.但我想知道我是否遗漏了一些东西,因为整个行为对我来说似乎很奇怪.

iphone uitableview ios5

8
推荐指数
1
解决办法
2399
查看次数

UIScrollView以自定义速度scrollRectToVisible

我有一个UIScrollView,我正在调用scrollRectToVisible:animated:YES就可以了.我想设置动画的速度.可以这样做吗?

iphone uiscrollview

7
推荐指数
2
解决办法
5635
查看次数

NSInvocation:object没有实现methodSignatureForSelector

我有这种奇怪的崩溃,只有在设备上运行应用程序时才会发生(在模拟器中不会发生).看起来这个问题无处不在,因为我没有改变那个特定的类.几天前我遇到了同样的问题,最后我通过复制类,重命名它,更改引用的类来修复它 - 我没有改变过一段代码.

所以我试图理解它为什么这样做.我读过某个地方,当对象不是子类时NSObject(通常是!),通常会出现此控制台错误.这是确切的控制台错误消息:

*** NSInvocation: warning: object 0x679e0 of class 'FFProximityPickerView' does not implement methodSignatureForSelector: -- trouble ahead
*** NSInvocation: warning: object 0x679e0 of class 'FFProximityPickerView' does not implement doesNotRecognizeSelector: -- abort
Run Code Online (Sandbox Code Playgroud)

然后它崩溃了.

我非常感谢任何可以帮助我的人.

编辑----------------
我发布此问题后发生了两次.在第一种情况下,我重新将类添加到项目中,不再崩溃.在第二种情况下,我修复了崩溃的类中的所有警告并解决了它.会继续观看,但到目前为止我的猜测是我没有修复警告(我总是倾向于立即修复它们)

iphone crash

7
推荐指数
2
解决办法
4305
查看次数

Twitter for iPad UI - 它是如何工作的?

Twitter for iPad推出了一种新的浏览内容方式.有没有人猜测这些滑动面板是如何管理的?它UIScrollView有一大堆UITableViews吗?还是一堆UIViewControllers滑在一起?或者是其他东西?你打赌什么?

navigation uiscrollview uinavigationcontroller ipad

6
推荐指数
1
解决办法
3610
查看次数

在PostgreSQL中选择带有DISTINCT的列

我正在从数据库查询公交车站,我希望每个公交线路/方向只返回1站.这个查询只是这样:

Stop.select("DISTINCT line_id, direction")
Run Code Online (Sandbox Code Playgroud)

除了它不会给我任何其他属性而不是那些2.我尝试了几个其他查询让它返回id除了line_iddirection字段(理想情况下它将返回所有列),没有运气:

Stop.select("DISTINCT line_id, direction, id")
Run Code Online (Sandbox Code Playgroud)

Stop.select("DISTINCT(line_id || '-' || direction), id")
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,查询都会丢失其distinct子句,并返回所有行.

一些很棒的家伙帮助我,并建议使用子查询让它返回所有的ID:

Stop.find_by_sql("SELECT DISTINCT a1.line_id, a1.direction, (SELECT a2.id from stops a2 where a2.line_id = a1.line_id AND a2.direction = a1.direction ORDER BY a2.id ASC LIMIT 1) as id FROM stops a1
Run Code Online (Sandbox Code Playgroud)

然后,我可以提取所有ID并执行第二个查询以获取每个停靠点的完整属性.

有没有办法在1个查询中拥有它并让它返回所有属性?

postgresql activerecord ruby-on-rails

6
推荐指数
1
解决办法
9934
查看次数

叠加混合模式公式?

我有2种颜色:1种动态设置,另一种颜色始终为0.5 alpha.我想计算得到的白色,就像使用叠加混合模式在动态颜色上绘制一样.

我知道Overlay结合了MultiplyScreen混合模式.

乘法混合模式的公式是:

Result Color = (Top Color) * (Bottom Color) /255
Run Code Online (Sandbox Code Playgroud)

屏幕混合模式是:

Result Color = 255 - [((255 - Top Color)*(255 - Bottom Color))/255]
Run Code Online (Sandbox Code Playgroud)

如何计算叠加混合模式的结果颜色?

是否有UIColor开箱即用的扩展类?

drawing blending colors ios

6
推荐指数
2
解决办法
1万
查看次数

具有BOOL检查的NSFetchRequest谓词是SLOW

考虑通过5k +条目存储过滤以下2个谓词:

predicate1 = [NSPredicate predicateWithFormat:@"hidden == NO AND name BEGINSWITH[cd] %@", searchString];
predicate2 = [NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@", searchString];
Run Code Online (Sandbox Code Playgroud)

我打开-com.apple.CoreData.SQLDebug后看到了获取请求的次数:

谓词1:0.4728s
谓词2:0.0867s

我错过了什么吗?两列都已编入索引.为什么添加一个简单的布尔检查会减慢获取请求的速度呢?

编辑:根据要求,输出:

CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZHIDDEN, t0.ZID, t0.ZNAME, t0.ZRANK FROM ZARTISTINDEX t0 WHERE ( t0.ZHIDDEN = ? AND ( NSCoreDataStringSearch( t0.ZNAME, ?, 393, 0) OR  NSCoreDataStringSearch( t0.ZNAME, ?, 393, 0))) ORDER BY t0.ZRANK DESC LIMIT 14
Run Code Online (Sandbox Code Playgroud)

rank列也被编入索引.我需要此请求超过0.5秒的原因是它用于自动完成功能.每次用户更改某个文本字段的值时,都会发出该请求.

编辑2:添加更多上下文信息:

- (NSArray*)autocompleteSuggestions:(NSString*)searchString {

    NSFetchRequest *request = [[NSFetchRequest alloc] init]; …
Run Code Online (Sandbox Code Playgroud)

iphone core-data

6
推荐指数
1
解决办法
2444
查看次数

去除"前缀"的NSSortDescriptor

我有一堆艺术家存储在CoreData中,并希望按名称对它们进行排序,但忽略前缀"the".因此,例如"甲壳虫乐队"将被归类为"甲壳虫乐队",有点像iTunes/iPod所做的那样.

所以我尝试cleanName在Artist模型中添加一个自定义属性,以便它可以用于排序:

NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"cleanName" ascending:YES];
Run Code Online (Sandbox Code Playgroud)

这显然会降低应用程序,因为cleanName它不是SQLEntity的属性:

...keypath cleanName not found in entity <NSSQLEntity Artist id=1>
Run Code Online (Sandbox Code Playgroud)

我知道我可以在商店中保存cleanName,但这对我来说似乎不对.一个新的属性只是将名称剥离了"the"前缀?真?

所以相反,我尝试使用自定义compareObject:toObject:implementation来子类化NSSortDescriptor:

- (NSComparisonResult)compareObject:(Artist*)artist1 toObject:(Artist*)artist2 {

 NSString *cleanString1 = [artist1.name stringByReplacingOccurrencesOfString:@"the " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [artist1.name length])];
 NSString *cleanString2 = [artist2.name stringByReplacingOccurrencesOfString:@"the " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [artist2.name length])];

 return [artist1.cleanName compare:artist2.cleanName options:NSCaseInsensitiveSearch];
}
Run Code Online (Sandbox Code Playgroud)

当我添加一位新艺术家,将"披头士乐队"添加到我的商店时,这就有效.艺术家被分类为"披头士乐队"并显示在我的"B"部分内.但是一旦我退出应用程序并重新启动它,我就会收到以下错误,并且tableview只保持空白:

sectionIndex A for Apparat
sectionIndex B for Bonobo
sectionIndex M for Misteur Valaire
sectionIndex M for Moderat
sectionIndex P for Paul Kalkbrenner
sectionIndex …
Run Code Online (Sandbox Code Playgroud)

sorting iphone core-data tableview

5
推荐指数
1
解决办法
467
查看次数

NSManagedObjectContext和GCD

来自Apple的核心数据编程指南:

您应该为每个线程提供它自己的完全私有的托管对象上下文,并保持它们的关联对象图在每个线程的基础上分开.

如何扩展到Grand Central Dispatch,你完全无法控制线程,这些线程是代表你自动创建的?

我现在这样做的方法是NSManagedObjectContext为每个调度队列分配一个,但事情就是这样:调度队列不一定每次都使用相同的线程,对吧?

iphone multithreading core-data grand-central-dispatch

5
推荐指数
1
解决办法
2078
查看次数