っているUIButtonを継続的に火災時の記者-保持します。
-
05-09-2019 - |
質問
まいどマリオだけで走行を続け、右を押すと、右ボタンをパッド?同様に気持ちを抱いて欲しいと思いUIButtonの継続的な火災、その期間で開催されます。こんなことが可能なので、UIButton?ない場合、このうUIImageViewによるオンチ取り扱い方法である。実際に、いくことUIButtonがあったのUIImageViews(配列として機能していD-パッド)の確認をタッチの取り扱い方法も開始を汚していかないといけないと思いすることが不可欠であるときUIButton、このように切り替えます。人を知ってどのように認識し継続的、文具(移動)-タッチください。
解決
ボタンを使用しないでください、マルチタッチとNSTimerを使用します:
タイマーを解除/起動するためにそれを使用し、その後、あなたのインタフェース内のビュー・ローカルNSTimerオブジェクトを作成します。
-(void)movePlayer:(id)sender {
<Code to move player>
}
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
timer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(movePlayer:) userInfo:nil repeats:YES];
}
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
if (timer != nil)
[timer invalidate];
timer = nil;
}
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
if (timer != nil) {
[timer invalidate];
timer = nil;
}
}
このようにして、事前に定義された間隔でイベントを繰り返し、そしてボタンに依存している、とあなたが探しているの繰り返し動作を取得することはできません。 touchesMovedトリガーに注意してください - 彼らは自分の指を移動する場合、これはタイマーをキャンセルし、プレイヤーが移動を停止する。
。他のヒント
また、前の回答に示されているものに似てやると、まだUIButtonを使用することができます。
ちょうどタイマーが「ダウンタッチ」とタイマーが「タッチアップインサイド」のいずれかで停止または「外をタッチアップ」しています。
上で開始しています彼らはあなたが自分でコーディングする必要はありません視覚効果に建てられたいくつかを提供しているので個人的に、私はUIButtonsを使用して好きです。
私にとって、以下の作品
- 作成ボタンを押します。
- 作成した2つの方法(ストップの接触を開始に触れる)のいずれかにビューコントローラー又はサブクラス.
- 追加 3 制御します。 タッチアップ中 や タッチドラッグ口 もっ停止に触れる方法 ット作を手がけていきます。 がスタートに触れる方法です。
- 時スタートに触れる方法を呼び出しますNSTimerとの間隔が約0.2(すいようのように呼び出される)により繰り返し、真実としてのセレクタの方法にしたいメソッドが呼び出されることは実際のものにしたい時に実行すユーザーにヒッります。
- 時停止に触れる方法を呼び出しまたは無効にタイマー
(
.invalidate()
)を割り当てのタイマーとして無料。
ことになる。
現在も全く異なる:
ReactiveCocoa6.
self.button.reactive
.controlEvents([.touchDown])
.observeValues { button in
SignalProducer.timer(interval: .milliseconds(500), on: QueueScheduler.main)
.take(until: button.reactive.controlEvents([.touchDragOutside, .touchDragExit, .touchUpInside, .touchUpOutside, .touchCancel]).map { _ in return })
.prefix(value: Date())
.startWithValues { date in
NSLog("\(date)")
}
}