私のプログラムでは、私はで初期化したUITapGestureRecognizer
を持っています。私はPlanetTapped: (UIImageView *)aPlanet
という名前でメソッドを呼び出すセレクタを渡しました。これでメソッドは正常に呼び出されますが、のように、引数をaction:
に渡す方法を知りたいと思います。これはポップスブルですか? UIGestureRecognizer
のセレクタに引数を送ることができるようにするのが理にかなっています。どんな助けもありがとうございます。ジェスチャ認識器の初期化セレクタへの引数の送信?
11
A
答えて
13
メソッドが呼び出すための正しい署名は次のようになります。
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer
、あなたが呼び出すことでジェスチャーを受け取ったビューにアクセスできます。
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer {
UIImageView* aPlanet = gestureRecognizer.view;
...
}
確かに、これは何UIGestureRecognizer reference状態です。
ジェスチャ認識プログラムには、1つ以上のターゲットアクションペアが関連付けられています。複数のターゲット - アクション対がある場合、それらは離散的であり、累積ではない。ジェスチャーの認識は、それらのペアのそれぞれに対するターゲットへのアクションメッセージのディスパッチをもたらす。呼び出されたアクションメソッドは、次のシグネチャのいずれかに適合しなければならない:
- (ボイド)handleGesture。
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer;
6
- (void)viewDidLoad
{
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressOnPhotos:)];
[yourView addGestureRecognizer:longPressRecognizer];
}
- (IBAction)handleLongPressOnPhotos:(UILongPressGestureRecognizer *)sender{
// use "sender.view" to get the "yourView" you have long pressed
}
これらはあなたを助けるでしょう願っています。次のようスウィフト3.0では
0
、関数のシグネチャは、(これらの例では、必要に応じて他のジェスチャー認識のクラスを置き換え)です:
func myButtonLongTouch(_ sender: UILongPressGestureRecognizer)
次のようにジェスチャー認識機能を設定するときは、この関数を参照:
if let button = sender.view as? UIButton {
// Your code here
}
:
longTouchGesture = UILongPressGestureRecognizer(target: self, action: #selector(myButtonLongTouch(_:)))
その後、押された(私の場合、ボタンに)ビューにアクセスするには、コードを使用します
最後に、この関数は(一般的にジェスチャーが開始されたとき、それが終了したときに)複数回呼び出されるので、あなたは、次のようにあなたが行うことができます、状態を確認したいと思うことを忘れないでください:
if (sender.state == UIGestureRecognizerState.ended) {
// Your code here
}
関連する問題
- 1. スイフト3:認識できないセレクタをジェスチャ認識機能のインスタンスに送信
- 2. 1つのジェスチャ認識器から別のジェスチャ認識器への移動方法
- 3. UIImageViewのジェスチャ認識器をオーバーラップ
- 4. ジェスチャ認識器の終了後に親ビューコントローラに渡す
- 5. iPhoneプログラミングのジェスチャ認識
- 6. initWithCoder:implementationをSwiftに変換するときに、ジェスチャ認識器のセレクタがトリガされない
- 7. 認識できないセレクタがdeviceOrientationDidChangeのインスタンスに送信
- 8. Delphiでのジェスチャ認識のパフォーマンスへの影響?
- 9. ジョブ初期化スクリプトへの引数の受け渡し
- 10. 3Dジェスチャ認識のためのDTW
- 11. コマンドラインへの引数の送信
- 12. ftwへの引数の送信
- 13. node.jsサーバーサイドコードへの引数の送信
- 14. Gtk createメソッドへの引数の送信
- 15. 引数値の計器化
- 16. pythonスーパークラスの初期化引数
- 17. ページベースのアプリケーションとジェスチャ認識ツール
- 18. 加速度計ベースのジェスチャ認識
- 19. UIView全体のジェスチャ認識ツール
- 20. Swift - UITextField - ジェスチャ認識ツールの遅延
- 21. Cortex M4 C++初期化器のハードフォールト
- 22. cmdへのパスと引数を送信
- 23. iphone 4 UIAlertView setAlertViewStyleインスタンスに送信された認識不能セレクタ
- 24. [NSNull isEqualToString:]:インスタンスに送信された認識できないセレクタ
- 25. [UIThreadSafeNode createPeripheral]:インスタンスに送信された認識できないセレクタ
- 26. 「インスタンスに送信されたセレクタが認識されません」
- 27. インスタンスに送信されたセレクタが認識されない
- 28. インスタンスに送信された認識できないセレクタ
- 29. 'sliderChanged:インスタンスに送信された認識できないセレクタ'
- 30. インスタンスに送信された認識できないセレクタ0x37fe098c09830
ああ、もちろん。私はそれを考えていたはずです。ご協力いただきありがとうございます! – Fitzy