这条线有什么问题?手势识别器 - >捏

时间:2011-11-18 16:10:52

标签: iphone warnings uigesturerecognizer

在接下来的第一行中,我会在'''令牌“

之前收到警告”预期标识符
gestureRecognizer.[pictureElement piece].transform =
CGAffineTransformScale(gestureRecognizer.[pictureElement
piece].transform, gestureRecognizer.scale, gestureRecognizer.scale);

我想这是一个愚蠢的错误,但我在这里坐了几个小时没有发现问题。 在下文中,您将看到整个方法

- (IBAction)pinchDetected:(UIPinchGestureRecognizer *)gestureRecognizer
{ 
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan || gestureRecognizer.state == UIGestureRecognizerStateChanged)
    {
        gestureRecognizer.[pictureElement piece].transform = CGAffineTransformScale(gestureRecognizer.[pictureElement piece].transform, gestureRecognizer.scale, gestureRecognizer.scale); 
        [gestureRecognizer setScale:1];  
    }
}

更新
如果我忘了添加一个括号,那将是不止一个警告。

第二次更新
pictureElement是一个类,而piece是该类的属性。
所以我希望Gesture对我的类pictureElement的属性片做出反应。
PictureElement继承自UIView,piece是UIView的实例

第三次更新
我认为我的手势没有任何问题,因为如果我添加 self.view 而不是 [pictureElement piece] 我的屏幕开始移动并对我的手势做出反应

提前谢谢

1 个答案:

答案 0 :(得分:2)

gestureRecognizer.[pictureElement piece].transform =没有意义。 x.y = z形式的东西,其中x是一个对象实例,在编译时转换为[x setY:z]或类似的东西 - 即消息setY:z被发送到实例{ {1}}。

不确定你想要做什么,但x部分是假的,不应该在那里?以下代码可能更有意义(尽管不一定正确):

gestureRecognizer.

作为关于风格问题的旁注,当您纯粹处理属性时,请考虑在任何一个地方始终坚持使用点符号(- (IBAction)pinchDetected:(UIPinchGestureRecognizer *)gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateBegan || gestureRecognizer.state == UIGestureRecognizerStateChanged) { [pictureElement piece].transform = CGAffineTransformScale([pictureElement piece].transform, gestureRecognizer.scale, gestureRecognizer.scale); [gestureRecognizer setScale:1]; } } )或消息传递符号(x.y)。例如,而不是写:

[x y]

你可以坚持所有点符号,如下:

[pictureElement piece].transform = thing

或者你可以把它变成所有的消息传递格式,如下所示:

pictureElement.piece.transform = thing