我试图在iPhone 6S或iPhone 6S Plus模拟器上使用Xcode 7 GM模拟力触摸.特别是,我试图模拟实施应用程序快捷方式的测试应用程序图标上的力触摸.
让我知道如果有一个模拟这个的解决方案,我尝试了Watch模拟器用来模拟力触摸的长按,因为iPhone将其捕获为长按手势,所以无效.
更新:我从Apple下载了ViewControllerPreview示例代码.运行他们的示例应用程序我发现模拟器虽然是iPhone 6s,但不支持3D /强制触摸功能.如果我要使用带有强制触摸功能的触控板的macbook,我仍然不确定它是否支持该功能.
编辑:使用具有强制触控触控板的macbook的人是否可以尝试使用触控板上的力触摸来模拟iPhone 6s或6s Plus模拟器上的3D触控?我的理论是,您可以使用新MacBook上的强制触控触控板来模拟新iPhone模拟器上的3D触控.如果您尝试,请添加注释,注明结果,我可以更新帖子.
EDIT2:似乎Force Touch触控板对新型号Macbook专业版没有帮助.
我有一个大小与屏幕大小相同的UICollectionView.它显示的UICollectionViewCells与collectionView的大小相同.每个细胞都有一个UIImage,它是细胞的大小.CollectionView启用了分页,因此它实际上是用户可以滑动的全屏照片幻灯片.
问题是
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath只有当用户用两根手指敲击一个小区或长按一根手指然后释放时才会被调用.它似乎没有单击选择的默认行为.我没有对CollectionView手势识别器进行任何更改,因此无法找到解决此问题的方法.
重现步骤:
如果您在iPhone5/S 8.0模拟器上运行该应用程序,屏幕将按预期显示,全白.
为什么会这样?有修复或解决方法吗?
我有一个基于某种状态的 swiftUI 动画:
withAnimation(.linear(duration: 0.1)) {
self.someState = newState
}
Run Code Online (Sandbox Code Playgroud)
当上述动画完成时是否有任何回调被触发?
如果有关于如何在 SwiftUI 中使用完成块完成动画而不是 的任何建议withAnimation,我也愿意接受这些建议。
我想知道动画何时完成,以便我可以做其他事情,就本示例而言,我只想在动画完成时打印到控制台。
我通过共享来自其他应用程序的内容看到,当使用共享表共享到Gmail邮件应用程序时,可以设置不同的主题和正文.我已经实现了它,它在本机邮件应用程序上工作正常但不适用于Gmail.
进入Yelp并分享业务然后从共享表中选择gmail,我发现主题和正文是不同的.主题包含业务的地址,而正文包含地址+ Yelp上的业务链接.
我试图在本机邮件应用程序上成功复制此逻辑但不在Gmail应用程序中复制.
我尝试过以下方法:
实现UIActivityItemSource方法
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"";
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
return @"body";
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType {
return @"subject";
}
Run Code Online (Sandbox Code Playgroud)
结果
Apple Mail主题设置为"主题",正文设置为"正文"
Gmail主题设置为"正文",正文设置为"正文"
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
Run Code Online (Sandbox Code Playgroud)
共享到Gmail应用时从不调用.
然后我尝试更多的黑客方式
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"body"] applicationActivities:nil];
[activityViewController setValue:@"subject" forKey:@"subject"];
Run Code Online (Sandbox Code Playgroud)
结果
Apple Mail主题设置为"主题",正文设置为"正文"
Gmail主题设置为"正文",正文设置为"正文"
任何让Gmail表现得像Apple Mail的方式?
我再次看到,Yelp和Safari等其他应用程序通过共享表从Gmail应用程序中获得了正确的行为.任何建议将不胜感激,谢谢.
在iOS 10中,有一个新的api允许开发人员使用tapic引擎UIFeedbackGenerator.
虽然这个api在iOS 10中可用,但它仅适用于新设备,iPhone 7和7 plus.它不适用于包括6S或6S Plus在内的旧设备,即使是那些具有tapic引擎的设备也是如此.我猜7和7 plus上的taptic引擎是一个不同的更强大的引擎.
我似乎无法找到一种方法来查看设备是否支持使用新的api.我想用taptic代码替换一些振动代码,这是有意义的.
编辑:
为搜索目的添加3个具体子类:UIImpactFeedbackGenerator UINotificationFeedbackGenerator UISelectionFeedbackGenerator
编辑2:
我有一个理论,但没有iPhone 7设备来测试它,所以如果你有一个,请试一试.UIFeedbackGenerator有一个名为prepare()的方法.当打印出UIImpactFeedbackGenerator的一个实例时,我注意到它打印了一个名为"prepared"的属性,它将显示0.在模拟器或iPhone 6S上调用prepare()然后打印出实例仍然显示准备为0.可以有人打电话准备()来自iPhone7的UIImpactFeedbackGenerator实例,然后将实例打印到控制台以查看prepare是否设置为1?此值未公开,但可能有一种方法可以使用私有api获取此信息.
我有一些代码用于加密和解密ios应用程序中的某些字符串.该代码涉及CCCrypt的使用.有没有一种可靠的方法来测试所使用的密钥的有效性而无需将密钥实际存储在任何地方?根据我的研究,似乎接近告知密钥是否有效的唯一方法是使用密钥长度和密钥哈希.任何人都可以指导我正确的方向吗?
我已经搜索了一段时间来解决这个问题但我无法解决它.我从私人git仓库中撤下了一个项目.有些人能够构建,而像我这样的其他人会遇到以下错误:
Error:Gradle:Execution failed for task ':ProjectName:buildNative'.
> execCommand == null!
Run Code Online (Sandbox Code Playgroud)
如果有人遇到这个并且知道如何修复它,请告诉我,这似乎不是我所参与的项目特有的问题.
我认为这是Gradle文件失败的部分:
task buildNative(type: Exec) {
if (System.env.ANDROID_NDK_HOME != null) {
def ndkBuild = new File(System.env.ANDROID_NDK_HOME, 'ndk-build')
commandLine ndkBuild
} else {
doLast {
println '##################'
println 'Skipping NDK build'
println 'Reason: ANDROID_NDK_HOME not set.'
println '##################'
}
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法通过终端在 iOS 模拟器上设置自定义位置?我知道可以通过“调试”>“位置”>“自定义位置”来完成此操作
我正在通过终端寻找某种命令以进行集成测试。
下面我粘贴了你应该能够粘贴到Swift 3游乐场的代码并查看错误.
我定义了一个协议,并创建一个该类型的空数组.然后我有一个类符合我尝试附加到数组的协议,但我收到以下错误.
protocol MyProtocol {
var text: String { get }
}
class MyClass: MyProtocol {
var text = "Hello"
}
var collection = [MyProtocol]()
var myClassCollection = [MyClass(), MyClass()]
collection.append(myClassCollection)
argument type '[MyClass]' does not conform to expected type 'MyProtocol'
Run Code Online (Sandbox Code Playgroud)
请注意,collection + = myClassCollection会返回以下错误:
error: cannot convert value of type '[MyProtocol]' to expected argument type 'inout _'
Run Code Online (Sandbox Code Playgroud)
这在早期版本的Swift中有效.
到目前为止我找到的唯一解决方案是迭代并将每个元素添加到新数组中,如下所示:
for item in myClassCollection {
collection.append(item)
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示感谢,谢谢!
编辑
如下所示的解决方案是:
collection.append(contentsOf: myClassCollection as [MyProtocol])
Run Code Online (Sandbox Code Playgroud)
当您缺少"as [MyProtocol]"时,真正的问题是误导性的编译器错误
编译器错误如下:
error: extraneous …Run Code Online (Sandbox Code Playgroud) 可能重复:
Objective-C中的浮点数有问题
我已经把这个问题解决了,就像我能得到它一样简单.随意尝试相同的事情,并告诉我,如果你得到相同的错误,你可能有什么解决方案.我已经在几台电脑上试过了.
float total = 200000.0f + 154196.8f;
NSLog(@"total: %f", total);
Run Code Online (Sandbox Code Playgroud)
输出是:
total: 354196.812500
Run Code Online (Sandbox Code Playgroud)
如果有人有任何逻辑解释,请随时分享.
在 Xcode 中,您可以编辑方案并选择双倍长度的 PseudoLanguage 作为应用程序语言。
这对于一次性构建非常有用,但我想在应用程序中添加一个 UI 切换,允许 QA 切换double-length PseudoLanguage。QA 的目标是进入应用程序内的调试设置菜单并打开double-length PseudoLanguage或关闭。
具体来说,有没有办法double-length PseudoLanguage在代码中切换?