0

私が作成しているアプリケーションには、AdvancedView1 という名前の UIView があります。ユーザーは画面上でビューをドラッグできます。ユーザーはビューを画面上の特定の位置にドラッグする必要があります。ビューが特定の領域にドロップされると、ビューは定義された場所に「スナップ」されます。IF AND ステートメントを使用しようとすると、エラーが発生します。助言がありますか?

また、"origin" は .h ファイルで宣言された CGPoint です。

- (void)pan:(UIPanGestureRecognizer *) gesture
{
if (gesture.state == UIGestureRecognizerStateChanged) 
 {
     CGPoint origin = [gesture locationInView:[self superview]];
     [self bringSubviewToFront:[self superview]];
     [self setCenter:origin];            
}   
if (gesture.state == UIGestureRecognizerStateEnded) 
{
    if (origin.x >= 574.0 && origin.x <= 724.0 ) {
    self.frame = CGRectMake(574.0, 184.0, self.frame.size.width,   self.frame.size.height);
    }
}   
}

「origin.x >= ....」に対して次のエラーが表示されます。

「構造体または共用体ではないメンバー "x" の要求」

4

1 に答える 1

1

origin変数のスコープは 1 番目の if ブロックに限定され、2 番目の if ブロックには表示されません。その宣言を関数スコープに移動します。

- (void)pan:(UIPanGestureRecognizer *) gesture
{
   CGPoint origin = [gesture locationInView:[self superview]];
   if (gesture.state == UIGestureRecognizerStateChanged) 
   {     
        [self bringSubviewToFront:[self superview]];
        [self setCenter:origin];            
   }   
   if (gesture.state == UIGestureRecognizerStateEnded) 
   {
       if (origin.x >= 574.0 && origin.x <= 724.0 ) {
          self.frame = CGRectMake(574.0, 184.0, self.frame.size.width,   self.frame.size.height);
       }
   }   
}
于 2011-01-10T09:37:31.147 に答える