在接下来的第一行中,我会在'''令牌“
之前收到警告”预期标识符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] 我的屏幕开始移动并对我的手势做出反应
提前谢谢
答案 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