我一直试图设置一个应用程序,使设备扫描外围设备并作为外围设备做广告.目标是当两个设备通过蓝牙发现彼此靠近时在后台唤醒.从Apple文档中,您似乎应该能够在后台运行BLE(启用蓝牙 - 中央和蓝牙 - 外设背景模式),并且当一台设备位于前台时,我的应用程序可以运行.首先,我这样宣传数据:
NSDictionary *advertisingData = @{CBAdvertisementDataLocalNameKey:@"my-peripheral",
CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:identifier]]};
// Start advertising over BLE
[peripheralManager startAdvertising:advertisingData];
Run Code Online (Sandbox Code Playgroud)
然后我将设备设置为扫描数据:
NSArray *services = @[[CBUUID UUIDWithString:identifier]];
[centralManager scanForPeripheralsWithServices:services options:nil];
Run Code Online (Sandbox Code Playgroud)
但是,当两者都进入后台(设备必须被锁定)时,蓝牙无法发现和
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
Run Code Online (Sandbox Code Playgroud)
永远不会在任何一个设备上调用 我怎样才能解决这个问题?谢谢
我试图使用AVAudioPlayer播放一个简单的声音,我不断在控制台中收到此错误:
2011-09-02 20:29:07.369 MusicLog[967:10103] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn: dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: ___CFObjCIsCollectable
Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
in /System/Library/Frameworks/Security.framework/Versions/A/Security
Run Code Online (Sandbox Code Playgroud)
这是我的代码,按下我的按钮时应播放声音:
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"tick" ofType:@"caf"];
NSError *error;
NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer *tickPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
[tickPlayer setDelegate:self];
[tickPlayer setNumberOfLoops:0];
[tickPlayer prepareToPlay];
if (tickPlayer == nil)
{
NSLog(@"%@", [error description]);
}
else
{
[tickPlayer play];
}
Run Code Online (Sandbox Code Playgroud)
我是否以某种方式将文件放在错误的位置?我只是将文件拖入项目并根据需要选择副本.
编辑:经过更多的测试后,我发现在运行IOS 4.2模拟器时,我没有得到这个错误,仅在IOS 5模拟器上.我可以假设这是iOS 5中的错误吗?
谢谢,
我有一个UIControl实现了触摸开始方法,如下所示:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//More code goes here
Run Code Online (Sandbox Code Playgroud)
UIControl的这个子类在视图控制器中实例化,然后作为子视图添加到该视图控制器.我在UIControl的touches begin方法中有一个断点,并且该方法永远不会被调用.我一直在做一些阅读,看起来View Controller有一些逻辑决定是否将触摸事件传递给它的子视图.奇怪的是,我在同一个视图控制器中有一个不同的UIControl子类,触摸事件在用户触摸时传递给它!这是完整的代码:
.H
#import <UIKit/UIKit.h>
@interface CustomSegment : UIView
@property (nonatomic, strong) UIImageView *bgImageView;
@property (nonatomic, assign) NSInteger segments;
@property (nonatomic, strong) NSArray *touchDownImages;
@property (nonatomic, readonly, assign) NSInteger selectedIndex;
@property (nonatomic, weak) id delegate;
- (id)initWithPoint:(CGPoint)point numberOfSegments:(NSInteger)_segments andTouchDownImages:(NSArray *)_touchDownImages;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end
Run Code Online (Sandbox Code Playgroud)
.M
#import "CustomSegment.h"
@implementation CustomSegment
@synthesize bgImageView, segments, touchDownImages, selectedIndex, delegate;
- (id)initWithPoint:(CGPoint)point
numberOfSegments:(NSInteger)_segments
andTouchDownImages:(NSArray *)_touchDownImages
{
self = …Run Code Online (Sandbox Code Playgroud) 我有一个UIToolbar,有一个白色调,一个条形按钮项,后面是一些灵活的空间,然后是另一个条形按钮项.我想让工具栏完全清晰,以便我可以看到灵活空间下的内容(我不关心看到按钮后面的内容).有没有办法做到这一点?我已经尝试将工具栏设置为半透明,但这并不能完全清楚.
我在我的应用程序中使用EKEventStore.我抓住默认商店并注册,以便在EKEventStoreChangedNotification对日历进行更改时收到通知.但是,当进行更改时,通知的发件人会被调用几次(5-10)次,有时在每次调用之间最多会有15秒.这会弄乱我的代码并使事情变得更加困难.我能做些什么吗?
谢谢
iOS7编辑:似乎就像iOS7的发布一样,这个问题已经消失了.现在,无论对CalendarStore所做的更改如何,只会EKEventStoreChangedNotification发送一个.
我有一个tableview,我想重新加载(并更改高度)sectionHeader而不是本节内的单元格.我想这样做的原因是因为我在标题上使用淡入淡出动画,如下所示:
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0]
withRowAnimation:UITableViewRowAnimationFade];
Run Code Online (Sandbox Code Playgroud)
但与此同时,我在该部分添加了一个单元格
[self.tableView insertRowsAtIndexPaths:
@[[NSIndexPath indexPathForRow:0 inSection:0]]
withRowAnimation:UITableViewRowAnimationRight];
Run Code Online (Sandbox Code Playgroud)
我希望能够保留UITableViewRowAnimationRight正在添加的单元格,但是当我重新加载Section时,淡入淡出动画会应用到整个部分.有没有办法只重新加载sectionHeader,而不是部分中的单元格?
你如何接受EKEventiOS邀请?我知道Fantastical,Calendars 5和其他日历应用程序可以使用此功能,但我没有看到暴露的非只读属性来更改用户在事件方面的状态.知道怎么做吗?
谢谢,
我正在使用 NWS REST API 作为我正在制作的应用程序的天气服务。我最初不愿意使用 NWS,因为它的文档很糟糕,但我无法抗拒,因为它是完全免费的。
现在我尝试使用它,但遇到了一些困难。当请求多天时,最低温度有几天显示为零。
(编辑:由于我对 API 进行了更多测试,我发现最低温度并不总是为零。它可以是最高温度或降水,它似乎完全随机。如果您想使用他们的网络界面,您可以在这里这样做: http: //graphical.weather.gov/xml/sample_products/browser_interface/ndfdBrowserByDay.htm
在这里: http: //graphical.weather.gov/xml/sample_products/browser_interface/ndfdXML.htm)
以下是最低温度为空的请求示例:http: //graphical.weather.gov/xml/sample_products/browser_interface/ndfdBrowserClientByDay.php? listLatLon=40.863235,-73.714780&format=24%20hourly&numDays=7
令人惊讶的是,在他们的网站上,提供了最低温度: http://forecast.weather.gov/MapClick.php?textField1 =40.83&textField2=-73.70
您会在最低温度下看到它填充了大约 5 个(有时更少,这是不一致的)空白字段,上面写着<value xsi:nil="true"/>
如果有人可以帮助我,我将不胜感激,使用 NWS API 有时可能有点让人不知所措。
谢谢,
我有一个UITableview子类UIVIew在表的一部分之上,如下所示:
-uitable--
|--uiview-|
|| ||
|| ||
|---------|
| |
| |
-----------
该视图与tableview具有相同的superview,但部分涵盖了tableview.上面有几个按钮UIView.我希望用户能够在视图上滚动并随后移动tableview(就像他在桌面上滚动一样).但是,如果他点击视图上的按钮,我希望该点击在视图上注册,而不是发送到tableview.现在,我重写了视图的- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event方法,总是返回NO,这适用于滚动,但具有将所有触摸发送到tableview的效果,使我的按钮无效.我有什么方法可以将滑动/平移手势传递到桌面视图,但保持轻敲手势?
谢谢,
所以我有一个 tableView,我想在点击时更改单元格的高度。嗯,实际上,我正在用更大的电池替换它。点击后,我调用:
tableView.beginUpdates()
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
tableView.endUpdate()
Run Code Online (Sandbox Code Playgroud)
然后我修改我的cellForRowAtIndexPath以返回正确的新单元格和高度。sizeThatFits通过在单元格的实现中覆盖来自动计算单元格的高度:
override func sizeThatFits(size: CGSize) -> CGSize {
return CGSizeMake(size.width, myHeight)
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,在我这样做之后,向下滚动没问题,但是当我向上滚动时,表格每秒跳跃 5 个像素左右,直到到达顶部。当我到达桌子顶部后,问题就消失了,并且两个方向都没有跳跃。知道为什么会发生这种情况吗?我想这与新的单元格高度取代其他单元格有关,但我不明白为什么 tableView 不处理这个问题。任何帮助表示赞赏!
谢谢!
编辑:从 cellForRowAtIndexPath 添加代码:
if self.openedCellIndex != nil && self.openedCellIndex == indexPath {
cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as ListCell
(cell as ListCell).updateWithDetailView(dayViewController!.view)
} else {
cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as ListCell
(cell as ListCell).updateWithData(eventDay: store.events![indexPath.row], reminderDay: store.reminders![indexPath.row])
}
return cell
Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个相当大的View Controller,我希望通过将一些功能分成几类来清理它.我读到了如何实现一个类别,并有:
#import "StatsVC.h"
@interface StatsVC (TableViewDelegate)
@end
Run Code Online (Sandbox Code Playgroud)
作为我的.h(该类别称为StatsVC + TableViewDelegate).我的实施就是这样开始的:
@implementation StatsVC (TableViewDelegate)
Run Code Online (Sandbox Code Playgroud)
在类别中多次,我访问的变量是原始类的iVars.我已经阅读并且据说这是允许的,但是对于类别中的iVar的每次使用,我都会得到以下错误消息:
'Use of undeclared identifier 'iVar'
有人知道为什么会这样吗?
谢谢,
我一直在网上搜索,尝试到目前为止我能想到的一切都无济于事.这是我的问题:在我的程序中我有一个名为Scale的类,Scale有几个属性.用户可以通过单击名为addScale的按钮将比例添加到tableView.按下addScale时,我将其添加到OrderedMutableSet.我使用该集来存储比例并防止重复比例.我不得不重写isEqual方法和Hash方法来欺骗计算机,以为两个具有相同属性的Scales完全相同.这很好用.但是当我打开应用程序并且之前在tableView中有一些比例时,我已经实现了归档,因此这些比例重新出现,正如预期的那样.这次,当按下addScale时,我得到一个例外:
-[__NSOrderedSetI addObject:]: unrecognized selector sent to instance 0x746dbf0
2011-08-29 13:20:49.095 MusicLog[678:f203]
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[__NSOrderedSetI addObject:]: unrecognized selector sent to instance 0x746dbf0'
Run Code Online (Sandbox Code Playgroud)
这是我的isEqual方法和我的Hash方法的代码:(补品,模式,节奏,八度音程和节奏都是整数)
- (NSUInteger)hash
{
NSUInteger prime = 31;
NSUInteger result = 1;
result = prime * result + tonic;
result = prime * result + mode;
result = prime * result + rhythm;
result = prime * result + octaves;
result = prime * result + tempo;
NSLog(@"%u", result);
NSLog(@"%u", NSUIntegerMax); …Run Code Online (Sandbox Code Playgroud) 我有一个tableView与自定义tableViewCells高42.由于某种原因,分隔线没有出现.它就好像它是一个普通的tableView,即我可以滚动和删除单元格,但分隔线不在那里.
有人知道为什么吗?
谢谢
ios ×11
iphone ×11
objective-c ×9
uitableview ×4
cocoa-touch ×3
uiscrollview ×2
bluetooth ×1
categories ×1
ekevent ×1
ekeventkit ×1
eventkit ×1
noaa ×1
set ×1
swift ×1
uicontrol ×1
uitoolbar ×1
uitouch ×1
weather ×1
weather-api ×1
xml ×1