小编Tom*_*omH的帖子

带有iOS ExternalAccessoryFramework的蓝牙经典版

我正在研究一个iOS应用程序的开发,该应用程序将使用iOS支持的蓝牙配置文件与蓝牙经典设备进行通信

据我了解,这应该可以使用外部附件框架,不应该要求参与MFi计划.从MFi常见问题解答:

什么类型的配件和技术不属于MFi计划?

不使用上述任何MFi许可技术的附件不属于MFi计划.例如:

到现在为止还挺好.在外部附件框架文档介绍说,(强调):

外部附件框架支持通过30针底座连接器或使用蓝牙无线连接与连接到基于iOS的设备的外部硬件.支持外部附件的应用程序必须确保正确配置其Info.plist文件.具体而言,您必须包含UISupportedExternalAccessoryProtocols密钥才能声明应用程序支持的特定硬件协议.

上面提到的"特定硬件协议"的值在哪里记录?我假设这是指蓝牙配置文件?

FWIW,我已下载并试图运行Apple的EADemo应用程序.它包含用于UISupportedExternalAccessoryProtocols密钥的值com.apple.p1和com.apple.p2.当我在第4代iPod Touch/iOS8.1.3上运行EADemo应用程序时,它找不到任何BT设备.它应该找到它所连接的Jawbone扬声器.

为了简化,我还创建了一个非常小的示例应用程序来监听EAAccessoryDidConnectNotification通知:

- (void)viewDidLoad {
    [super viewDidLoad];        
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil];
    [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];

}

- (void) accessoryDidConnect:(NSNotification *)notification {
    EAAccessory *connectedAccessory = [[notification userInfo] objectForKey:EAAccessoryKey];
    NSLog(@"didConnect: %@", connectedAccessory.name);
}
Run Code Online (Sandbox Code Playgroud)

当我在iPod Touch上运行代码时,不会收到任何通知.应用程序运行时.我关闭了Jawbone扬声器,然后开启连接.(我可以通过查看设置 - >蓝牙确认它确实连接).

我已将UISupportedExternalAccessoryProtocols键添加到app plist并将values数组保留为空并添加了com.apple.p1和com.apple.p2(如EADemo应用程序中所示).

关于我缺少的任何想法?如何使用iOS应用程序与蓝牙经典设备进行通信?

iphone bluetooth objective-c external-accessory ios

11
推荐指数
1
解决办法
4366
查看次数

在NSString中包含'%'?

如何在NSString中包含百分号(%)?

[NSString stringWithFormat:@"Downloading (%1.0%)",  percentage]
Run Code Online (Sandbox Code Playgroud)

上面的代码不包括字符串中的最后一个百分比.

objective-c nsstring

10
推荐指数
2
解决办法
6095
查看次数

UIWebView stringByEvaluatingJavaScriptFromString

我坚持要在我的UIWebView中运行一些非常基本的JS.在Web视图的委托中,我有:

- (void)webViewDidFinishLoad:(UIWebView *)wView {
    NSString *someHTML = [wView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('box')[0]"];   
    NSString *allHTML = [wView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
    NSLog(@"someHTML: %@", someHTML);
    NSLog(@"allHTML: %@", allHTML);
}
Run Code Online (Sandbox Code Playgroud)

但是当调用该方法时,someHTML为nil,而allHTML包含webview中HTML的整个主体.

我在Safari JS控制台中运行了JS,它运行得很好(它找到了一个类'box'的div,所以我知道它在HTML中)

有什么建议?

更多信息:

FWIW,导致以下各项也是零

NSString *result = [self.webView stringByEvaluatingJavaScriptFromString: @"document"];
NSLog (@"1. result: %@", result); //should log the document object?

result = [self.webView stringByEvaluatingJavaScriptFromString: @"document.body"];
NSLog (@"2. result: %@", result); //should log the document body

result = [self.webView stringByEvaluatingJavaScriptFromString: @"document.body.getElementsByClassName"];
NSLog (@"3. result: %@", result); //should log a function

result = [self.webView stringByEvaluatingJavaScriptFromString: @"document.body.getElementsByClassName('box')[0]"];
NSLog (@"4. …
Run Code Online (Sandbox Code Playgroud)

javascript iphone uiwebview uiwebviewdelegate

10
推荐指数
1
解决办法
3万
查看次数

带有bash变量的JMESPath查询表达式

使用简单的aws cli查询来检查是否存在Lambda函数并回显相关角色(如果存在):

#!/bin/bash

fname=$1
role=$(aws lambda list-functions --query 'Functions[?FunctionName == `$fname`].Role' --output text)

echo "$fname role: $role"
Run Code Online (Sandbox Code Playgroud)

但是,$ fname似乎正在解析为aws命令中的空字符串.我试图逃避后面的嘀嗒声,交换`到'以及其他捶打编辑的镜像(是的,我在调用脚本时在cl上传递一个字符串:)

如何在bash脚本中将变量正确传递给JMESPath查询?

bash aws-cli jmespath

9
推荐指数
2
解决办法
5055
查看次数

CALayer优化?

我正在添加几个CALayers作为UIView层的子层.每层的内容是从服务器下载的不同图像.每个图层从屏幕外动画到随机生成的位置.图像数据是异步下载的.每张图片约为300x300或更小.

作为随机放置的结果,层重叠并且一些层被它们上面的层遮挡.这一切都很好.

我正在使用这个问题的答案中的建议来删除图层,因为它们变得完全被遮挡. 确定覆盖率的计算发生在单独的线程上.

我有一个UIPanGestureRecognizer,允许用户在屏幕上拖动图层.

当添加的层数接近25-30并且逐渐变差时,我遇到了性能问题.动画变得不连贯并且通常完全不存在(新添加的层只是出现在它们的最终位置).并且平移手势被忽略或导致所选层的不稳定重新定位.

我假设我正在杀死GPU,所有层重叠,另一层动画在上面?

有关如何提高绩效的任何建议?

处理大量图层的最佳做法?

是否更好的是让图层在单独的view.layer中开始动画,而不是之前添加的图层?

谢谢!

calayer ios

7
推荐指数
1
解决办法
3540
查看次数

调整UIView大小以适合CGPath

我有一个UIView子类,用户可以在其上添加随机CGPath.通过处理UIPanGestures添加CGPath.

我想将UIView调整为包含CGPath的最小矩形.在我的UIView子类中,我重写了sizeThatFits以返回最小尺寸:

- (CGSize) sizeThatFits:(CGSize)size {
    CGRect box = CGPathGetBoundingBox(sigPath);
    return box.size;
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作,并且UIView的大小调整为返回的值,但CGPath也按比例"调整大小",从而产生与用户最初绘制的路径不同的路径.例如,这是用户绘制的路径视图:

绘制的路径

这是调整大小后的路径视图:

在此输入图像描述

如何调整我的UIView大小而不是"调整"路径?

uiview cgpath ios

4
推荐指数
1
解决办法
1729
查看次数

iOS:不兼容的块指针类型

这段代码:

[UIView animateWithDuration:0.25f animations:^() {
 self.view.alpha = 1.0f;
}];
Run Code Online (Sandbox Code Playgroud)

正在生成此编译时错误:

不兼容的块指针类型初始化'void(^)()',期望'void(^)(void)'

给出了什么 - 这在以前工作过(实际上在其他项目中编译就好了 - (我刚检查过).是否存在我忽略的编译器/项目设置?

Base SDK为4.2,部署目标为4.2

ipad ios objective-c-blocks

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