-1

Scrollview(8images) + Toolbar のコードも作成しました。ツールバーのボタン項目をクリックしようとすると、スクロールビューが期待どおりに戻りません。以下はコードです。

ツールバー ボタンをクリックしても、"IBAction clickprjinfo" に対してトリガーされるアクションはありません。接続インスペクターで Barbuttonitem を介して、この IBACTION に "SentAction" を実行したことを確認しました。

実行時に、ツールバーボタンを押したままスクロールビュー画面にタッチし、ボタンを離すと、IBACTIONがトリガーされます。

誰でも私の間違いやこれを理解するためのより良い方法を通知するのに役立ちます.

-(void)viewDidLoad
{
   [super viewDidLoad];
   [self pgcontrolview];
}

-(void) pgcontrolview  {
   pageC.numberOfPages=8;
   pageC.currentPage=0;
   for (int i=1; i<=8; i++)
   {
       UIImageView *images=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i]]];
       images.frame=CGRectMake((i-1)*1024, 0, 1024, 760);
       [scroller addSubview:images];
   }
   scroller.delegate=self;
   scroller.contentSize=CGSizeMake(1024*8, 760);
   scroller.pagingEnabled=YES;

   UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle_Tap:)];
   tap.numberOfTapsRequired = 1;
   tap.numberOfTouchesRequired = 1;
   [self.view addGestureRecognizer:tap];
}

-(IBAction)clickprjinfo:(id)sender{
   pageC.currentPage=1;
   CGRect frame=scroller.frame;
   frame.origin.x=0;//frame.size.width*page;
   frame.origin.y=0;
   [scroller scrollRectToVisible:frame animated:YES];
}
4

1 に答える 1

5

以下のように Gesture デリゲート メソッドを追加します。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// test if our control subview is on-screen
if ([touch.view isKindOfClass:[UIControl class]]) {
    // we touched a button, slider, or other UIControl
    return NO; // ignore the touch
}
return YES; // handle the touch
}

UIButtonタップをUITapGestureと見なしているため、上記のデリゲートメソッドはUIControl(UIButton)のタッチを無視して実行できるため、UIButtonでUITapGestureを許可する必要はありません

-(IBAction)clickprjinfo:(id)senderアクション

于 2013-09-18T07:56:54.720 に答える