小编owl*_*ipe的帖子

iOS Swift蓝牙键盘按键检测

在斯威夫特2在iOS 8.4,我怎样检测时,蓝牙键盘的Up,DownSpace按下按键吧,所以我可以用行动回应?示例代码会很有帮助.

keyboard ios swift

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

Health处理多个步骤源的方式与HealthKit-swift不同

我的Swift iOS应用程序与HealthKit连接,向用户显示他们当天到目前为止所采取的步骤.在大多数情况下,这是成功的.当唯一的步骤来源是iPhone的内置计步器功能记录的步骤时,一切正常,我的应用程序显示的步数与Health应用程序的步数一致.然而,当我的个人iPhone上有多个数据源时,我的Pebble Time智能手表和iPhone的计步器都向Health提供了步骤 - 我的应用程序吓坏了,记录了两者的所有步骤.iOS Health应用程序根据重复步骤(因为我的iPhone和我的Pebble报告每60秒执行一次健康状况)可以做到这一点,并显示准确的每日步数,我的应用程序从HealthKit获取的数据包括来自两者的所有步骤来源,造成很大的不准确.

如何点击Health应用程序的最终结果,其中步数是准确的,而不是点击HealthKit的过度膨胀步骤数据流?

更新:这是我用来获取每日健康数据的代码:

func recentSteps2(completion: (Double, NSError?) -> () )
    {

        checkAuthorization() // checkAuthorization just makes sure user is allowing us to access their health data.
        let type = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount) // The type of data we are requesting


        let date = NSDate()
        let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
        let newDate = cal.startOfDayForDate(date)
        let predicate = HKQuery.predicateForSamplesWithStartDate(newDate, endDate: NSDate(), options: .None) // Our search predicate which will fetch all steps taken today

        // The actual HealthKit …
Run Code Online (Sandbox Code Playgroud)

iphone ios swift healthkit hkhealthstore

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

在Swift 3中排序字典

试图在Swift 3中对NSMutableDictionary进行排序,来自Swift 2的代码不再适用于我(各种错误).

我试图使用以下代码按其值(浮点数)对我的字典进行排序:

var sortedDict = unsortedDict.allValues.sorted({ $0 < $1 }).flatMap({ floatedlotterydictionary[$0] })
Run Code Online (Sandbox Code Playgroud)

基本上,我想要这个未排序的字典......

{
a = "1.7";
b = "0.08";
c = "1.4";
}
Run Code Online (Sandbox Code Playgroud)

...变成这个排序的字典......

{
b = "0.08";
c = "1.4";
a = "1.7";
}
Run Code Online (Sandbox Code Playgroud)

但是使用上面那行代码会返回错误"参数类型anyobject不符合类型NSCopying"的$0 < $1部分.那么如何根据Swift 3中的值对字典进行排序?

(注意:这行代码部分来自这个答案.)

我在Xcode 8 beta 1中使用Swift 3.

sorting dictionary swift swift3 xcode8

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

以编程方式将条形按钮项图像设置为系统项—Swift

我有一个条形按钮项设置为我的图像资产文件夹中的自定义图像。启动后,一旦用户按下按钮,我希望它更改为系统项 — 停止 ( X) 按钮。我知道如何以编程方式更改条形按钮的图像,但是如何将图像更改为代码中的系统项之一?

Swift 3,Xcode 8 测试版 1。

编辑这是我引用的系统项目: Xcode 系统项

如何将我的按钮图像从我的代码更改为这些系统项之一?

xcode uibarbuttonitem ios uibarbuttonsystemitem swift

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

NSPrintOperation - 保存到位置而不提示

我有一个GitHub的仓库,它允许用户通过加载到一个WebView中,并使用一些HTML保存在Mac上的分页PDF的NSPrintOperation(具体而言,NSPrintSaveJobshowsPrintPanel设置为false)以让用户保存该PDF的任何位置他们的Mac上类似于默认的保存面板NSSavePanel.但是,我正在尝试使用代码,而我想将创建的PDF保存到特定文件夹(/Users/owlswipe/Downloads/)而不使用保存面板.

我从WebView(带有保存面板)保存PDF的代码目前是这样的:

let printOpts: [String : AnyObject] = [NSPrintJobDisposition:NSPrintSaveJob as AnyObject]
let printInfo: NSPrintInfo = NSPrintInfo(dictionary: printOpts)
printInfo.paperSize = NSMakeSize(595.22, 841.85)
let printOp: NSPrintOperation = NSPrintOperation(view: webView.mainFrame.frameView.documentView, printInfo: printInfo)
printOp.showsPrintPanel = false
printOp.showsProgressPanel = false
printOp.run()
Run Code Online (Sandbox Code Playgroud)

如何调整该代码以将PDF保存到预设文件夹而不是用户从保存面板中选择的文件夹?

macos cocoa pdf-generation swift swift3

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

输入文本字段时未禁用 UIKeyCommand (Swift)

我制作了一个计算器应用程序(swift),并设置了一些 UIKeyCommands,这样如果用户有蓝牙键盘,他们就可以在计算器中输入数字/符号。

他们是这样工作的:

UIKeyCommand(input: "4", modifierFlags: [], action: "TypeFourInCalculator:")
func TypeFourInCalculator(sender: UIKeyCommand) {
    btn4Press(UIButton)
}
Run Code Online (Sandbox Code Playgroud)

这一切都运行良好,当用户按下四键时向计算器添加四(即使计算器本身没有文本字段)。但是:我还有几个标准文本字段,我希望 UIKeyCommands 在用户进入其中一个文本字段时停止(这样他们就可以再次使用 BT 键盘定期输入)。在不禁用 UIKeyCommands 的情况下,在计算器函数中键入结果,而不会在文本字段中输入。

所以我尝试了这个,试图在文本字段成为第一响应者时禁用 UIKeyCommands:

let globalKeyCommands = [UIKeyCommand(input: "4", modifierFlags: [], action: "TypeFourInCalculator:"), UIKeyCommand(input: "5", modifierFlags: [], action: "TypeFiveInCalculator:")]

override var keyCommands: [UIKeyCommand]? {
    if powertextfield.isFirstResponder() == false { // if the user isn't typing into that text field
        return globalKeyCommands // use key commands
    } else { // if the user is typing
        return nil // disable those UIKeyCommands …
Run Code Online (Sandbox Code Playgroud)

bluetooth ios swift bluetooth-keyboard

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

在Swift中查找字符串中第N个子串实例的索引

我的Swift应用程序涉及在UITextView中搜索文本.用户可以在该文本视图中搜索某个子字符串,然后在文本视图中跳转到该字符串的任何实例(例如,第三个实例).我需要找出它们所在的字符的整数值.

例如:

示例1:用户搜索"hello"并且文本视图显示"hey hi hello,hey hi hello",然后用户按下箭头以查看第二个实例.我需要知道h第二个hello中第一个的整数值(即hello中的哪个#字符在文本视图中).整数值应该是22.

示例2:当文本视图读取"abcd"并且他们正在查找第一个实例时abc,用户搜索"abc" ,因此整数值应该是1(a因为它是实例的第一个字符,所以它的整数值他们正在寻找).

如何获取用户正在搜索的字符的索引?

string ios swift swift2

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

Android HTTP请求在模拟器中工作但不在磨损设备上

我正在制作一个简单的Android Wear应用来控制我的恒温器,我正在用Volley发送POST请求来控制它们.Android Wear模拟器中的一切都运行良好(请求有效),但是,当应用程序在我的Moto 360上加载时,凌空请求被调用,但总是超时.

为什么我的截击请求会在我的手表失败但是在模拟器上工作?其他应用程序的请求在我的手表上成功(例如,内置天气应用程序可以在大约3秒内加载天气数据).而且,最奇怪的部分:我的应用程序在我的手表上工作(成功发出截击请求),并且,在我从Android Studio安装到我的手表大约一天之后,它突然停止加载数据,原因并非明显.

到目前为止我尝试过的:

  • 我已经请求了我的互联网许可manifest.xml.
  • 我已将超时时间增加到30秒(请参阅下面的代码),这并没有改变任何内容.
  • 我试过通过蓝牙将我的计算机和模拟器连接到手机的连接上(将我的物理手表的蓝牙连接复制到我的手机上),模拟器仍然成功地提出请求(虽然延迟了两秒),排除了蓝牙太慢的可能性.
  • 我确保API级别足够低,以便我的Marshmallow运行手表(我的手表和应用程序都是API级别23).
  • 在我使用恒温器数据向公司服务器发出请求之前,我尝试向Google做一个快速测试请求,当Google请求在模拟器中返回网站的HTML代码时,它会在我的手表上超时(请求启动后30秒) .
  • 我尝试将一些虚拟数据放入应该加载的回收器视图数据中,并且虚拟数据确实显示出来,排除了回收器视图被破坏.
  • 我从手表中删除了该应用并重新安装了该应用,并从手机中删除了该手机,重新安装并再次将其删除,但都无济于事.
  • 与Google支持人员进行长时间的聊天并没有产生任何意义.

这是我的代码(来自我的主视图的适配器):

public void refreshThermostatsRecyclerView(RequestQueue queue) {
    String url = "https://mobile.skyport.io:9090/login"; // login call to the thermostats server Skyport
     Log.w("myApp", "Starting /login call to Skyport"); // this gets called on simulator and watch
     // Request a string response from the provided URL.
     StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
 Response.Listener<String>() {
       @Override
       public void onResponse(String response) {
           // …
Run Code Online (Sandbox Code Playgroud)

java android android-volley wear-os

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

能够以编程方式访问Android Wear上的NFC设置

我有一个带有NFC的Android Wear 2.0手表(华为手表2).我发现,在后台运行NFC,耗费了大量电池,所以我制作了一个应用程序,让我可以在使用Android Pay之前轻松打开它并在之后将其关闭.

虽然有一个打嗝:虽然我可以轻松地直接启动WiFi设置

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS))
Run Code Online (Sandbox Code Playgroud)

我无法启动NFC设置Settings.ACTION_NFC_SETTINGS(设置应用程序打开但崩溃),也Settings.ACTION_WIRELESS_SETTINGS无法进入所有连接设置(设置应用程序永远不会打开).

那么,我如何以编程方式直接启动设置的NFC窗格而不是直接启动Android Wear 2手表上的设置应用?

编辑:我已经尝试过在Android手机上执行此操作的标准方法,即启动NFC_SETTINGS或WIRELESS_SETTINGS,但两者都失败了,我正在寻找有关如何在手表上解决这个问题的信息,所以我的问题是绝对不是重复的.

我对任何解决方案持开放态度,从可访问性服务到意图到我不知道的隐藏活动.

java nfc wear-os

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

快速将所有UI元素一次连接到一个插座

使用Swift 2和XCode 7.2.1,有没有办法将所有UI元素(按钮和标签)连接到一个插座?我觉得这可以通过在所有元素上执行CMD-A然后控制拖动到您的代码来完成,但这只会将其中一个选定的元素连接到插座.

xcode ios

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