私は、Mac上でマウスポインタを動かすのではなく、トラックパッドを使って画面を移動するオブジェクトを必要とするtvOS用のゲームを作成しています。私が持っている問題は、私のゲームで、UIViewControllerがtouchesBeganまたはtouchesMovedを受け取っていないということです。 tvOSに取り組んでいないtouchesBeganについて、ネット上でいくつかのたわ言を読んだ私は、この理論をテストするためにTVOS UIViewControllerがtouchesBeganやtouchesMovedを受け取らない
を小さなプログラムを書いたViewController.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
CGPoint cursorLocation;
UIImageView* cursorImage;
}
@end
ViewController.m:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
cursorImage = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 92.0, 92.0)];
cursorImage.center = CGPointMake(CGRectGetMidX([UIScreen mainScreen].bounds), CGRectGetMidY([UIScreen mainScreen].bounds));
cursorImage.image = [UIImage imageNamed:@"Cursor"];
cursorImage.backgroundColor = [UIColor clearColor];
cursorImage.hidden = NO;
[self.view addSubview:cursorImage];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
cursorLocation = CGPointMake(-1, -1);
}
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
if ((cursorLocation.x == -1) && (cursorLocation.y == -1)) {
cursorLocation = [touch locationInView:self.view];
} else {
float xDiff = location.x - cursorLocation.x;
float yDiff = location.y - cursorLocation.y;
CGRect rect = cursorImage.frame;
if ((rect.origin.x + xDiff >=0) && (rect.origin.x + xDiff <= self.view.frame.size.width)) {
rect.origin.x += xDiff;
}
if ((rect.origin.y + yDiff >=0) && (rect.origin.y + yDiff <= self.view.frame.size.height)) {
rect.origin.y += yDiff;
cursorImage.frame = rect;
cursorLocation = location;
}
}
}
@end
私のテスト美しく働いた!私の質問は、touchesBeganまたはtouchesMovedが私のフル・アプリケーションのViewControllerによって受信されないようにすることができるものです(この質問のソースは長すぎます)。 Spitball away - 私はアイデアがなくなり、あなたが持っている可能性のある提案を歓迎する!
この[こちら](https://developer.apple.com/library/tvos/documentation/General/Conceptual/AppleTV_PG/DetectingButtonPressesandGestures.html#//apple_ref/doc/)のtvOSドキュメントを読むことから始めてみることをお勧めします。 uid/TP40015241-CH16-SW1)。私はあなたがおそらくプレスが必要だと思う.Began ... またこれはかなり[既にここにある] [http://stackoverflow.com/questions/32516535/how-can-i-receive-touches-using-tvos ) – earthtrip
ご覧のとおり、touchesBeganはうまく動作します(テストコードで示されているように)。だから問題は、それは完全なアプリで動作しないのですか?そして、プレスBeganが正しければ、なぜプレスがないのですか?Movedも同様ですか? – headbanger
レコードの場合、pressBeganはView Controllerにも渡されていません。奇妙な。 – headbanger