我已经在Xcode 6中使用iOS单视图应用程序了几天,当我尝试添加触摸事件时遇到了障碍。这是我想要做的:
在故事板中,我创建了一个UILabel和一个UIImageView,我想在UIImageView中添加一个点击手势,这样当我点击图像时,标签会发生变化。虽然我不太习惯在Objective-C中编程,但我确实理解我必须首先将手势附加到UIImageView,然后可以通过我的事件处理程序方法来处理。以下是我的尝试:
在ViewController.h文件中:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UIImageView *imageView;
IBOutlet UILabel *myLabel;
}
-(void)handleTap:(id)sender;
@end
在ViewController.m文件中:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *pgr = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleTap)];
[imageView addGestureRecognizer:pgr];
[super viewDidLoad];
}
- (void)handleTap:(UITapGestureRecognizer *)tapGestureRecognizer
{
myLabel.text = [NSString stringWithFormat:@"It Worked"];
}
我期望发生的事情是myLabel会在轻触imageView时发生变化,myLabel和imageView分别链接到UILabel和UIImageView。而且我意识到我可以通过向imageView添加一个按钮来节省很多麻烦,但我真的想让它与触摸事件一起工作。
我是该语言的新手,这是我第一次尝试构建某些东西。我发布这篇文章时尽量做到尽可能详细,但如果你需要更多细节,我很乐意提供。非常感谢细节,代码示例以及如何将各个部分组合在一起的解释。谢谢。
答案 0 :(得分:1)
#import "ViewController.m"
@interface ViewController ()
{
IBOutlet UILabel *myLabel;
IBOutlet UIImageView *myImage;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Tapped:)];
tap.numberOfTapsRequired = 1; //You can change this is double tap ect..
Red.cancelsTouchesInView = YES;
myImage.userInteractionEnabled = YES; //if you want touch on your image you'll need this
[myImage addGestureRecognizer:tap];
}
-(void)Tapped:(UITapGestureRecognizer *)sender
{
myLabel.text = [NSString stringWithFormat:@"It Worked"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
如果您的游戏仍无效,则表示您尚未将标签和图片与界面构建器相关联。要将它们连接到界面构建器,您可以将do变暗并将其连接到视图上的所需对象,就像在此图像中一样,我单击该点并将其拖动到标签。
答案 1 :(得分:1)
您缺少':'登录手势的选择器。看起来应该是这样的:
... action:@selector(handleTap:)];
如果它仍无法正常工作,那么您的IBOutlet
连接可能会出错。你应该在Xcode
内看到带有圆点的小圆圈,如果它完成了。 Check this sample image: