私はiOSが初めてで、タッチが終了したときにのみスライダーを反応させる方法を知りたいです。私は方法でそれを理解します:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
しかし、私はそれを機能させることはできません。
誰でも簡単で明確な例で私を助けることができますか?
プログラムで答えてください。ストーリーボードは使用しません。
前もって感謝します!!!
ジェスチャ認識エンジンを追加できます:
UITapGestureRecognizer *tapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSliderTap:)] autorelease];
[slider addGestureRecognizer:tapGestureRecognizer];
- (void)onSliderTap:(UIGestureRecognizer *)gestureRecognizer {
// handle event
}
またはスライダーにいくつかのアクションを追加します:
[slider addTarget:self action:@selector(onTouchEnded:) forControlEvents:UIControlEventTouchUpInside];
答えが見つかりました!
これらの人は私を大いに助けてくれました: UISlider のタッチを検出しますか?
小さな精度で:
関連するスライダーのアクションは、彼に次のように割り当てられます。
[self.slider addTarget:self action:@selector(touchEnded:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
メソッドのシグネチャは次のとおりです。
- (IBAction)touchEnded:(id) sender
ストーリーボードでは、アクションをスライダーに割り当てるのは少し違うようです。
答えてくれてありがとう!
プロパティを連続的に設定する必要があります。
スライダー値の変更によって継続的な更新イベントが生成されるかどうかを示すブール値が含まれます。
mySlider.continuous= NO;
代わりにUIControlEventTouchUpInside
andを接続できます (現在それを行っている場合)。-Outside
-ValueChanged
編集:または、もう少しエレガントに言うと、を使用UIControlEventValueChanged
しますが、イベントをメソッドのパラメーターとして提供します:
[self.slider addTarget:self action:@selector(handleValueChanged:withEvent:) forControlEvents:UIControlEventValueChanged];
そして、タッチの位相をチェックして、そのended
状態にあるかどうかを確認します。