gpt4 book ai didi

ios - Apple Watch wkinterfacetimer 无法启动

转载 作者:行者123 更新时间:2023-11-29 12:08:06 25 4
gpt4 key购买 nike

我正在开始一个 watch 开发项目。它基本上会启动和停止 watch 上的几个计时器。初始代码在 42mm 模拟器上运行良好,但在实际 watch 上运行不佳。也就是说,点击“开始”按钮开始运行 WKInterfaceTimer 标签。物理 watch 上没有任何反应。但是,我知道计时器正在工作,因为如果我在 InterfaceBuilder 中选中 Enabled,计时器会在应用程序在 watch 上启动后立即开始递增。这是 watch app extension.h 和 .m 的代码。 IB 中的 socket 连接正确。此外,点击 Dispatch 按钮可进入 Dispatch IBAction 并正常工作。我也试过关闭和打开 watch 电源。这没有帮助。

我真的很感激在这方面的一些帮助。

接口(interface) Controller .h

/
/
/
/
/
/
#import <WatchKit/WatchKit.h>
#import <Foundation/Foundation.h>
@interface InterfaceController : WKInterfaceController
@property (unsafe_unretained, nonatomic) IBOutlet WKInterfaceTimer *ElapsedTime;
@property (unsafe_unretained, nonatomic) IBOutlet WKInterfaceLabel *dispatchTime;
@property (weak, nonatomic) NSDate *startDate;
@end
/
/
/
interface controller.m
/
/
/
/
#import "InterfaceController.h"
@interface InterfaceController()
@end
@implementation InterfaceController
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
/
}
- (void)willActivate {
/
[super willActivate];
}
- (void)didDeactivate {
/
[super didDeactivate];
}
- (IBAction)Start {
self.startDate = [NSDate date];
[self.ElapsedTime setDate:self.startDate];
[self.ElapsedTime start];
}
- (IBAction)Stop {
[self.ElapsedTime stop];
}
- (IBAction)Dispatch {
NSDate *date =[NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *dateString = [dateFormatter stringFromDate:date];
[self.dispatchTime setText:dateString];
}
@end

最佳答案

仍然不确定为什么 WKInterfaceTimer 对象不起作用。相反,我使用了一个标准的 NSTimer 对象和一个标准的 NSDate 对象。该代码有效。注意:如果您有另一个基于页面的 Storyboard 场景,第一个场景紧随其后,您必须将自定义 WkInterfaceController 对象添加到下一个场景,并将界面 Storyboard 中的导出连接到它。否则, socket 将无法连接,因为文件的所有者不正确。此外,请确保将自定义 WkInterfaceController 添加到 watch 套件扩展目标,而不是 iOS 目标。

    //
// InterfaceController.h
// EMSTimers WatchKit 1 Extension
//
// Created by Nelson Capes on 12/18/15.
// Copyright © 2015 Nelson Capes. All rights reserved.
//

#import <WatchKit/WatchKit.h>
#import <Foundation/Foundation.h>

@interface InterfaceController : WKInterfaceController
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *ElapsedTime;

@property (strong, nonatomic) IBOutlet WKInterfaceLabel *dispatchTime;
@property (strong, nonatomic) NSDate *startDate;
@property (strong, nonatomic) NSDate *dateStarted;
@property (strong, nonatomic) NSTimer *elaspsedTimer;
@end

//
// InterfaceController.m
// EMSTimers WatchKit 1 Extension
//
// Created by Nelson Capes on 12/18/15.
// Copyright © 2015 Nelson Capes. All rights reserved.
//

#import "InterfaceController.h"


@interface InterfaceController()

@end


@implementation InterfaceController

- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];

// Configure interface objects here.
}
- (IBAction)Start {
NSDate *date =[NSDate date];
self.dateStarted = date;
NSTimeInterval timeInterval = 1.0;
self.elaspsedTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(calculateTimer:) userInfo:self.elaspsedTimer repeats:YES];
[self.elaspsedTimer fire];
}
- (IBAction)Stop {
[self.elaspsedTimer invalidate];
}
-(void)calculateTimer:(NSTimer *)theTimer
{

NSTimeInterval interval = [self.dateStarted timeIntervalSinceNow];
interval = (-1 * interval);

int time = round(interval);
div_t h = div(time, 3600); //seconds total, divided by 3600 equals
int hours = h.quot; // hours, divided by 60 equals
div_t m = div(h.rem, 60); // minutes
int minutes = m.quot;
int seconds = m.rem; // and remainder is seconds


NSString *intervalString = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
[self.ElapsedTime setText:intervalString];
}
- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
[super willActivate];
}

- (void)didDeactivate {
// This method is called when watch view controller is no longer visible
[super didDeactivate];
}

@end

关于ios - Apple Watch wkinterfacetimer 无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34364820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com