1

UIButton1回押して離すか、押したまま(理想的には1.5秒)画面上を移動するかによって、異なる機能を提供したいと思います。現在、このコードを使用しています:

  [button addTarget:self action:@selector(open:)
     forControlEvents:UIControlEventTouchDown]

    panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
    [panRecognizer setMinimumNumberOfTouches:1];
    [panRecognizer setMaximumNumberOfTouches:1];
    [panRecognizer setDelegate:self];
    [button addGestureRecognizer:panRecognizer];

-(IBAction)open:(id)sender {}

-(void)move:(id)sender{}

move:正常に動作しますが、open:動作しません。

4

2 に答える 2

0

たぶん、ボタンのドラッグイベントを使用できます

[button addTarget:self action:@selector(wasDragged:withEvent:) 
    forControlEvents:UIControlEventTouchDragInside];

このリンクを見ることができます: http://www.cocoanetics.com/2010/11/draggable-buttons-labels/

moveメソッドにフラグを立てることができます.タッチアップメソッドに入るときは、ボタンが移動したかどうかを確認し、関連するロジックを開くかどうかを決定します.

#define BUTTON_DRAGGED_TAG -100
#define BUTTON_DEFAULT_TAG 0

- (void)onButtonTouchUpInside:(UIButton *)button withEvent:(UIEvent *)event
{
    if (button.tag != BUTTON_DRAGGED_TAG)
    {
        //doOpen
    }

    button.tag = BUTTON_DEFAULT_TAG;
}

- (void)onButtonTouchUpOutside:(UIButton *)button withEvent:(UIEvent *)event
{
    button.tag = BUTTON_DEFAULT_TAG;
 }

- (void)onButtonTouchCancel:(UIButton *)button withEvent:(UIEvent *)event
{
    button.tag = BUTTON_DEFAULT_TAG;
}

- (void)onButtonDraged:(UIButton *)button withEvent:(UIEvent *)event
{

    button.tag = BUTTON_DRAGGED_TAG;
}
于 2013-04-24T08:59:54.667 に答える