小编Loc*_*eyu的帖子

键盘显示为iOS应用程序但文本字段没有响应(键盘按钮也没有)

我有一个UITextField被设置为first responder,并且我之后已经验证它已被设置为first responder,并且键盘也弹出.

但是,当我尝试在键盘上键入时,没有任何内容输入,而且键也不亮.

一个非常奇怪的事情是,当我插入蓝牙物理键盘时,我能够输入字段中的字符!然后,当我关闭键盘并再次出现虚拟键盘时,我无法打字.

我在互联网上搜索了解决方案,但无济于事.我呼吁makeKeyAndVisibleUIWindow这是一个人的建议解决方案.

keyboard user-interface cocoa uitextfield ios

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

System.Net.HttpListener 的最大 URL 长度 (C#)

我通过以下代码在 C# 中使用 System.Net.HttpListener 编写了一个简单的服务器:

Listener = new HttpListener();
Listener.Prefixes.Add(Prefix);
Listener.Start();
Listener.BeginGetContext(GetContextCallback, null);
Run Code Online (Sandbox Code Playgroud)

我注意到,只要我发送的 URL(在 HTTP GET 中)超过约 255 个字符,我的服务器就会返回 400(错误请求)HTTP 响应。我对此做了一些研究,似乎没有标准,尽管大多数浏览器和服务器似乎至少处理约 2000 个字符。

有趣的是,当我的 GetContextCallback() 以这种方式失败时,它甚至不会被调用。

我真的很想知道如何配置它以支持大于 255 个字符,有谁知道是否可能?

谢谢!

更新:我发现此限制似乎并不针对整个 URL,而是针对单个目录名称。我猜这与 MAX_PATH 有关,但我知道事实上其他服务器可以处理这个问题,并且我已经看到“野外”的实际链接,其目录名称超过 300 个字符(Google 特别是链接)像/extern_js/f/........)。

更新:我正在使用以下 GET 请求通过 telnet 测试我的服务器:

GET /013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789/test.html
Host: 10.15.38.80:8008
Accept: */*
Run Code Online (Sandbox Code Playgroud)

c# http httplistener

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

Mach-O文件LC_FUNCTION_STARTS加载命令

有谁知道Mach-O LC_FUNCTION_STARTS命令指向的数据格式是什么?

我能找到的最多信息是在loader.h头文件中:

#define LC_FUNCTION_STARTS 0x26 /* compressed table of function start addresses */
Run Code Online (Sandbox Code Playgroud)

我看到dyldinfo工具有一个-function_starts选项来分析这些数据并且该工具是开源的,但该工具的最新发布版本不包含支持:

http://opensource.apple.com/source/ld64/ld64-97.2/src/other/dyldinfo.cpp

有谁知道我在哪里可以获得最新版本的dyldinfo的源代码,或者我可以获得有关此加载命令的更多信息?

谢谢!

macos mach-o dyld

4
推荐指数
2
解决办法
2127
查看次数

无权查看在Open Operation上从iOS文档提供程序传回的文档

我正在iOS 9.2中创建一个文件/文档提供程序,并使导入和导出操作正常工作.但是,Open操作给我带来了麻烦.

我的文档提供程序将示例文件写入其文件提供程序存储,特别是在以下位置:

/private/var/mobile/Containers/Shared/AppGroup/41EDED34-B449-4FE0-94BA-4046CC573544/File Provider Storage/test.txt
Run Code Online (Sandbox Code Playgroud)

我已经能够从文档提供程序中读取它并验证数据是否正确.但是,当我尝试回读传递给主机应用程序的URL时,我收到权限错误:

Error Domain=NSCocoaErrorDomain Code=257 "The file “test.txt” couldn’t be opened because you don’t have permission to view it." UserInfo={NSFilePath=/private/var/mobile/Containers/Shared/AppGroup/41EDED34-B449-4FE0-94BA-4046CC573544/File Provider Storage/test.txt, NSUnderlyingError=0x15eda7700 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
Run Code Online (Sandbox Code Playgroud)

我使用相当简单的代码进行读写,但如果相关则将其包含在此处:

文件写入:(在我调用dismissGrantingAccessToURL之前在文档提供程序中调用:)

NSString *contents = @"this is a dynamically created text file";
NSLog(@"write to file = %@", fileName);
NSError *err;
[contents writeToFile:fileName 
          atomically:NO 
            encoding:NSStringEncodingConversionAllowLossy 
                error:&err];
Run Code Online (Sandbox Code Playgroud)

文件读取:(在documentPicker中的主机应用程序内部调用:didPickDocumentAtURL :)

NSString *readback = [[NSString alloc] initWithContentsOfFile:[url path]
                                                    usedEncoding:nil
                                                        error:&err];
Run Code Online (Sandbox Code Playgroud)

我从Apple的示例代码开始,并阅读了他们的文档,但没有运气解释为什么这是失败的.

对于我的文件提供程序,只调用init:函数.我不确定这是否正常,或者是否应该为Open操作调用其他方法.这是我的init代码:

- (instancetype)init {
    self = [super init];
    if …
Run Code Online (Sandbox Code Playgroud)

permissions file-permissions document ios ios9

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

在ARM/Thumb(IOS)上解码BLX指令

我已阅读了大部分ARM文档,但仍无法解码BLX指令.这是两个例子:

__text:0000347C 02 F0 B2 ED                 BLX             _objc_msgSend

__text:0000469C 01 F0 A2 EC                 BLX             _objc_msgSend
Run Code Online (Sandbox Code Playgroud)

这两个都应该去同一个地方,虚拟地址0x5FE4如下所示:

__symbolstub1:00005FE4 38 F0 9F E5                 LDR             PC, =__imp__objc_msgSend
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚使用它们的指令字节从上述两个地址(0x347C和0x469C)获得的计算.根据ARM文档,它应该是一个相对跳跃,使用右移2,但数字不起作用.

任何人都可以帮忙吗?

assembly arm thumb ios

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

确定二进制文件是否包含 Bitcode 的方法似乎不再有效

在我寻找一种确定 iOS 二进制文件是否是使用 Bitcode 构建的方法时,我发现了以下帖子:

如何检查框架是否支持 Xcode7 的 BITCODE

在这里,建议使用以下方法来确定二进制文件中是否存在位码:

$ otool -l libName.o | grep __LLVM
Run Code Online (Sandbox Code Playgroud)

但是,我已经在几个二进制文件上尝试过,但没有成功。其中之一是我知道有位代码的库,因为在我更改其项目上的标志后,构建错误消失了。其中另一个是文件扩展名的二进制文件,使用存档构建。另一个是苹果手表。

我相信上述所有二进制文件都应该有 Bitcode,但我总是无法从上述命令中得到任何结果。

有谁知道任何其他适用于最新二进制文件的方法?

我正在使用 XCode 7.2 和 10.10.5 以防万一。

更新:这是一个文件示例,该文件应该具有位代码,但上述命令不返回任何内容。它是来自测试文件提供程序的二进制文件。我通过 Archive 和 Deploy as Ad Hoc 生成它,并确保为目标启用了 bitcode 的设置。

https://www.dropbox.com/s/eyuzs5j1t7nsq6t/CustomDocumentProviderFileProvider?dl=0

ios ios-frameworks xcode7 bitcode xcode7.2

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

在Cocoa中一般分配内存的安全方法,它将自动解除分配

在我的Cocoa项目中,我有一些地方,我使用malloc/free.然而几个月前我决定重构以利用ARC,为了做到这一点,我试图替换malloc,它将返回一个指针,指向将被自动清理的东西.

我使用了这个功能(错误检查和其他记录省略)

+ (void *) MallocWithAutoCleanup: (size_t) size 
{
    NSMutableData * mutableData = [[NSMutableData alloc] initWithLength:size];
    void * data = [mutableData mutableBytes];
    return data;
}  
Run Code Online (Sandbox Code Playgroud)

这种方法运行良好一段时间,但最近出现了随机内存覆盖问题.我找到了这个函数的原因,看起来正在发生的是NSMutableData实例正被释放,即使我保持指向其mutableBytes的指针.

我猜这种情况正在发生,因为对象的唯一直接引用是本地的并且正在消失,并且mutableBytes指向对象内部,因此ARC不够智能来处理那种引用计数.

有没有什么办法可以重构这段代码来保留mutableData对象,只要使用了mutableBytes指针(即某人有引用它)?我知道一个选项就是返回NSMutableData本身,但这需要一些重构并且看起来非常混乱.

memory xcode cocoa memory-management automatic-ref-counting

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

在Cocoa Framework中轻松转换静态库和动态库

我创建了一个以"Cocoa Touch Framework"项目类型(在iOS 8.1上)开始的框架,当我完成后,我最终得到了一个运行良好的动态库.

但是对于某些情况,我还需要一个框架,里面有一个静态库.我已经看到了详细描述整个手动过程的页面(创建了Framework目录结构等),但由于我已经为我的框架开发了一个项目,我希望有一些标志或设置我可以调整为只需放入静态框架而不是动态框架.

如果有人能告诉我如何调整我的框架的项目设置,请告诉我.

谢谢!

xcode cocoa frameworks build ios8

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

XCUITest:以协调的方式在两个应用程序中运行测试

我正在考虑使用XCUITest进行iOS应用程序的UI测试.看起来XCUITest具有广泛的功能,包括能够使用多个应用程序.但是,多个应用程序支持似乎有限.

似乎使用XCUIApplication我可以使用Bundle ID启动另一个应用程序甚至监视其状态.但是,我想要做的是能够为两个具有紧密交互的应用程序运行协调测试(例如,一个应用程序执行到另一个应用程序的开放URL,执行一些UI操作,然后返回到第一个应用程序).

这可能只是使用XCUITest,还是需要一些更高级别的工具?(我认为有些工具可以做到这一点,但如果可能的话,我宁愿留在XCUITest)

理想情况下,我会将所有代码放在一个文件中,以执行两个应用程序中的UI操作.但如果这是不可能的,我会愿意写一些单独的测试应用程序,这些应用程序可以有效地交给另一个,在它们"转向"时执行操作.但我不确定如何协调两个测试应用程序.

iphone automated-tests ios xctest xcuitest

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

鼠标停止时mouseMoved事件停止

我已经实现了一个自定义的NSView(标记为),并且能够获得mouseUp:,mouseDown:和mouseMoved:events.为此,我有AcceptFirstResponder返回YES,并在awakeFromNib中调用以下内容:

[[self window] makeFirstResponder:self];
[[self window] seAcceptsMouseMovedEvents:true];
Run Code Online (Sandbox Code Playgroud)

然而,非常奇怪的是,如果我单击并拖动,mouseMoved:events将停止进入,直到我松开鼠标按钮并获得mouseUp:

我已经看过其他相关帖子,但是他们都说如果视图是第一响应者(并且它是),那么我应该接收这些事件.

为什么mousemoved:事件停止了?

user-interface cocoa nib mouseup

0
推荐指数
1
解决办法
878
查看次数

预先创建套接字而不知道它们是IPv4还是IPv6

我有一些代码通过预先创建套接字(通过.socket()BSD API)工作,然后在地址已知的时候它将执行connect()等.这适用于IPv4但现在我正在重构也支持IPv6.

问题是,当我执行初始socket()时,我需要放入AF_INET或AF_INET6.但是因为我不知道地址但我不知道哪个是正确的.反正有没有创建一个适用于任何一个的通用套接字?如果我使用AF_INET6并且我在IPv4网络上,我是否正确认为它不起作用?

一个相关的问题 - 即使我还不知道IP地址,我是否有可能检测到我的设备所处的网络:IPv4还是IPv6?假设有一个网络接口,我想我只能是其中一个网络,所以如果我能找到一种方法来检测我的设备所处的网络类型,那么我可以在创建套接字时这样做.

另一个选择是重构只有在我知道地址时才创建套接字,但是有一个很大的代码库,如果可能的话我想避免这种情况.

我正在编写在iOS上运行的代码,但我不确定这是否与此相关.

c sockets ipv4 ipv6 ios

0
推荐指数
1
解决办法
311
查看次数