小编Joh*_*tin的帖子

在Mavericks上通过ssh启动时,Applescript失败并出现错误(-600)

我已经尝试过寻找这个,并且已经看到其他人有类似的问题,但似乎没有找到任何答案....

我有一个AppleScript,我试图在ssh上运行,以便我可以远程控制我的mac.这在以前的OSX 10.8中有效,但从升级到10.9后似乎不再起作用.

我正在执行的命令是:

ssh <user>@mymac.local "osascript -e 'tell application \"iTunes\" to play'"
Run Code Online (Sandbox Code Playgroud)
  • 我已经设置了RSA密钥,因此ssh会话正确打开
  • 我正在连接Mac当前登录并运行的用户
  • 在脚本启动时,iTunes正在Mac上与该用户一起运行

脚本失败了,回来了:

execution error: iTunes got an error: Application isn’t running. (-600)
Run Code Online (Sandbox Code Playgroud)

同样,我之前使用过的其他一些脚本现在似乎也在10.9上以相同的错误被打破,所以这似乎与它运行在ssh上的事实有关,而不是iTunes或特定的问题应用.

我已经尝试将applescripts打包为应用程序,将它们保存在远程Mac上,然后在ssh会话中打开它们,但这也失败了:

ssh <user>@mymac.local
open "~/Desktop/Play Music.app"
Run Code Online (Sandbox Code Playgroud)

(其中'Play Music.app')是作为应用程序导出的AppleScript.

这不会在ssh会话中报告错误,但远程mac上会出现一个applescript对话框: 在此输入图像描述

我还有几个在我的Mac上使用crontab安排的脚本,这些脚本在升级后也失败了.

我认为这是小牛队的一部分安全变化,但我似乎找不到让它重新运作的方法.有没有人对此有任何解决方案?

macos ssh applescript osx-mavericks

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

iOS7 - 设置UITabBarController的selectedIndex会破坏屏幕右边缘的触摸事件?

UITabBarController在iOS7上遇到了一个奇怪的问题,似乎无法找到解决方法,所以欢迎任何帮助!

场景:

  • 基于导航的应用程序在iPad上使用横向方向.
  • App包含一个主视图,第二个视图是一个UITabBarController.
  • TabBarController有两个选项卡.
  • 第一个视图有两个按钮 - 每个按钮对标签栏控制器执行一个segue,并设置一个不同的选项卡.(即button1选择第一个选项卡,button2选择第二个选项卡).
  • prepareForSegue通过调用setSelectedIndex选项卡栏控制器来完成设置选项卡.

简单的故事板,演示了这个问题

结果:

在iOS 7上,我发现标签栏控制器中显示的视图无法在视图的右侧边缘注册任何触摸事件!因此,在上面显示的故事板中,屏幕右侧的UISwitch无法点击.

我甚至在视图中附加了一个轻敲手势识别器,并用它来记录可以触摸的屏幕区域 - 它似乎记录了大约x = 770点的触摸事件.剩下的1/4屏幕是"不可触摸的"!

在segue之后,如果您手动切换到另一个选项卡并再次切换回来,则触摸事件将"固定"并且完整视图会再次响应触摸.

这似乎不是iOS 5/6上的问题.

任何帮助非常感谢:

  1. 是什么导致这种情况首先发生(iOS7错误/更改?)
  2. 我还能怎样解决这个问题?我试过调用setSelectedViewController以及使用setSelectedIndex,这似乎是一样的.

提前致谢.

selectedindex frame uitabbarcontroller ios7

14
推荐指数
2
解决办法
2888
查看次数

在iOS 6上使用故事板处理方向/旋转

所以....我刚刚花了整整一个下午,看过各种各样的帖子,尝试了很多东西让它发挥作用,没有运气.我现在已经把这个简单地回到了尽可能简单的情况下,它似乎仍然没有用.

在这个简单的场景中,我有一个只包含UINavigationController和一个初始视图控制器的storyboard: 在此输入图像描述

看过有关IOS 6中自动旋转方法更改的所有帖子,我创建了UINavigationController的子类,并在这个子类和第一个视图控制器上实现了shouldAutorotate和supportedInterfaceOrientations方法:

导航控制器:

// NavController.h
#import <UIKit/UIKit.h>

@interface NavController : UINavigationController

@end

// NavController.m
#import "NavController.h"

@interface NavController ()

@end

@implementation NavController

- (BOOL) shouldAutorotate {
    return YES;
}

- (NSUInteger) supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

@end
Run Code Online (Sandbox Code Playgroud)

第一控制器

// FirstController.h
#import <UIKit/UIKit.h>

@interface FirstController : UIViewController

@end

// FirstController.m
#import "FirstController.h"

@interface FirstController ()

@end

@implementation FirstController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (BOOL)shouldAutorotate {
    return YES;
} …
Run Code Online (Sandbox Code Playgroud)

cocoa orientation ios6

5
推荐指数
2
解决办法
6631
查看次数

当背景和屏幕关闭时,在WatchKit锻炼应用程序中播放音频

我正在尝试构建一个WatchKit应用程序,它将在锻炼期间提供音频反馈.音频是一系列短预先录制的语音片段.

  • 该应用程序开始锻炼会话
  • 当应用处于活动状态时,音频剪辑可以正常播
  • 当屏幕打开时应用程序处于后台时(例如,通过点击数字表冠或打开另一个应用程序),音频也可以正常播放.

但是,当屏幕关闭时 - 例如通过开始锻炼然后降低手腕 - 音频不会播放,直到应用再次激活.

  1. 开始锻炼+在屏幕上保持应用程序=声音播放正常.
  2. 通过点击数字表冠+保持屏幕开启锻炼+移动应用程序到背景=声音播放正常.
  3. 开始锻炼+下手腕=屏幕关闭,声音不再播放.
  4. 开始锻炼+移动应用程序到背景+下手腕=屏幕关闭,声音不再播放.

当屏幕关闭时,我正在试图找出我为了支持锻炼应用程序中的音频而错过了什么...

  • 该应用已激活HKWorkoutSession.
  • 该扩展程序启用了"锻炼处理"后台模式 WKBackgroundModes
  • 扩展程序还启用了"音频"后台模式UIBackgroundModes.
  • 该扩展具有HealthKit权利,并且所有HealthKit功能都在运行.
  • 在iOS应用程序中,我添加了"音频"后台模式.

我试过了:

  • 使用播放音频剪辑 AVAudioPlayer
  • AVAudioEngine+ 播放音频AVAudioPlayerNode
  • 完全放弃剪辑并使用AVSpeechSynthesizer

行为是相同的 - 一旦屏幕关闭,声音就不再播放.如果应用程序在后台并且屏幕仍然打开,则会播放声音.

该应用程序在Watch OS 4上运行.我已经在Series 2和Series 3手表上进行了测试,两者都是相同的.

我错过了什么?

avfoundation ios watchkit watchos watchos-4

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

使用NSManagedObjectContextWillSaveNotification标识已更改对象的旧值和新值

我正在尝试跟踪核心数据上下文中对象的更改,跟踪已更改的属性的名称以及旧值和新值.

我已经注册了NSManagedObjectContextWillSaveNotification在即将发生保存时收到通知,并且可以从上下文中提取插入/更新/删除的对象...然后我可以使用.changedValues查看更改的值.

但是,我在检索旧值时遇到困难......

作为一个例子,我有一个跟踪位置的对象,因此其中一个更改返回:

po [obj changedValues]
{
    originX = 260;
    originY = 180;
}
Run Code Online (Sandbox Code Playgroud)

这为我提供了对象上已更改的属性的新值.为了尝试获取旧值,我正在使用changedValuesForCurrentEvent,根据文档应该返回

"包含自上次发布以来已更改的持久属性的键和旧值的字典 NSManagedObjectContextObjectsDidChangeNotification"

但是,当我尝试这个时,它又回来了......:

po [obj changedValuesForCurrentEvent]
{
}
Run Code Online (Sandbox Code Playgroud)

如何捕获旧值和新值?

core-data objective-c ios

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

使用Swift时不加载KIF测试包XCTest.dylib

我正在尝试将Swift中的新测试添加到当前用Objective C编写的现有KIF测试包中.

建立:

  • Xcode 6.4
  • cocoapods 0.37.2
  • Podfile使用最新版本的KIF

我已经设置了Swift桥接头,导入了KIF以及我项目的其他相关部分,以便将这些部分提供给Swift.

我把事情简化为一个简单的测试用例,在这个阶段甚至不使用KIF:

import Foundation

class MyFirstTest : KIFTestCase {

    func testOne() {
        NSLog("Done")
    }
}
Run Code Online (Sandbox Code Playgroud)

测试包构建正常,但是当我运行时,我得到:

2015-07-03 14:52:32.620 MyApp [1104:204793]加载/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest/MyApp_UI_Tests:dlopen时出错(/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest/MyApp_UI_Tests,262):未加载库:@ rpath/libswiftXCTest.dylib

参考自:/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest/MyApp_UI_Tests

原因:未找到图片DevToolsBundleInjection:加载包'/private/var/mobile/Containers/Data/Application/F20A664E-BD2D-4299-A93F-4C6758CBAF34/tmp/MyApp_UI_Tests.xctest'时出错

我在这里尝试过这些建议,包括:

  • 为App和测试包目标设置运行路径搜索路径到@ executable_path/Frameworks
  • 将"嵌入式内容包含Swift代码"设置为YES

我也尝试过:

  • 完整的cocoapods清理和重建项目/工作区
  • 删除所有DerivedData并运行干净的构建

我也看到过这可能与代码签名身份相关的建议,但捆绑包无法在具有开发标识的模拟器上以及在真实设备上加载.

如果我回到仅使用Objective C测试,一切正常.

我错过了什么?

objective-c ios kif swift xcode6

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