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变量范围仅限于第一个 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 回答