在斯威夫特2在iOS 8.4,我怎样检测时,蓝牙键盘的Up,Down或Space按下按键吧,所以我可以用行动回应?示例代码会很有帮助.
我的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) 试图在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.
我有一个条形按钮项设置为我的图像资产文件夹中的自定义图像。启动后,一旦用户按下按钮,我希望它更改为系统项 — 停止 ( X) 按钮。我知道如何以编程方式更改条形按钮的图像,但是如何将图像更改为代码中的系统项之一?
Swift 3,Xcode 8 测试版 1。
如何将我的按钮图像从我的代码更改为这些系统项之一?
我有一个GitHub的仓库,它允许用户通过加载到一个WebView中,并使用一些HTML保存在Mac上的分页PDF的NSPrintOperation(具体而言,NSPrintSaveJob与showsPrintPanel设置为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保存到预设文件夹而不是用户从保存面板中选择的文件夹?
我制作了一个计算器应用程序(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) 我的Swift应用程序涉及在UITextView中搜索文本.用户可以在该文本视图中搜索某个子字符串,然后在文本视图中跳转到该字符串的任何实例(例如,第三个实例).我需要找出它们所在的字符的整数值.
例如:
示例1:用户搜索"hello"并且文本视图显示"hey hi hello,hey hi hello",然后用户按下箭头以查看第二个实例.我需要知道h第二个hello中第一个的整数值(即hello中的哪个#字符在文本视图中).整数值应该是22.
示例2:当文本视图读取"abcd"并且他们正在查找第一个实例时abc,用户搜索"abc" ,因此整数值应该是1(a因为它是实例的第一个字符,所以它的整数值他们正在寻找).
如何获取用户正在搜索的字符的索引?
我正在制作一个简单的Android Wear应用来控制我的恒温器,我正在用Volley发送POST请求来控制它们.Android Wear模拟器中的一切都运行良好(请求有效),但是,当应用程序在我的Moto 360上加载时,凌空请求被调用,但总是超时.
为什么我的截击请求会在我的手表上失败但是在模拟器上工作?其他应用程序的请求在我的手表上成功(例如,内置天气应用程序可以在大约3秒内加载天气数据).而且,最奇怪的部分:我的应用程序在我的手表上工作(成功发出截击请求),并且,在我从Android Studio安装到我的手表大约一天之后,它突然停止加载数据,原因并非明显.
到目前为止我尝试过的:
manifest.xml.这是我的代码(来自我的主视图的适配器):
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) 我有一个带有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,但两者都失败了,我正在寻找有关如何在手表上解决这个问题的信息,所以我的问题是绝对不是重复的.
我对任何解决方案持开放态度,从可访问性服务到意图到我不知道的隐藏活动.
使用Swift 2和XCode 7.2.1,有没有办法将所有UI元素(按钮和标签)连接到一个插座?我觉得这可以通过在所有元素上执行CMD-A然后控制拖动到您的代码来完成,但这只会将其中一个选定的元素连接到插座.