gpt4 book ai didi

objective-c - 连接到 UIVIew 的 UIGestureRecognizer

转载 作者:行者123 更新时间:2023-11-28 19:15:46 24 4
gpt4 key购买 nike

我是 iOS 开发的菜鸟(所以请多多包涵),我正在尝试使用 Xcode 从头开始​​创建一个简单的触摸应用程序。我已经在这上面花了一个星期,但我似乎无法找出我遗漏了什么,所以我在这里,寻求一些指导:)

首先,我创建了一个空应用程序,然后创建了一个 xib 文件 (MainWindow.xib) 并向其中添加了一个窗口对象 (Main_Window)。然后,我在这个 Main_Window 中创建了一个 View 对象 (Main_View),并在这个 View 中添加了一个标签对象 (lblTitle)。 Main_View 对象几乎覆盖了整个 Main_Window 屏幕。

所以,简而言之,我的 MainWindow.xib 的层次结构是这样的:Main_Window --> Main_View --> lblTitle。

最后,我创建了一个 ViewController 对象 (Main_View_Controller),其“view”设置为 Main_View,“rootViewController”设置为“Main_Window”。

在项目中,

我用“TouchEvent_View”将 UIView 子类化,连接到 xib 文件中的“Main_View”。

我用“TouchEvent_ViewController”将 UIViewController 子类化,连接到 xib 文件中的“Main_View_Controller”。

在我的 AppDelegate.h 中,

我创建了一个“IBOutlet UIWindow *window”,连接到 xib 文件中的“Main_Window”。

我为我的 viewController 和 View 类创建了一个对象。

 @property (strong, nonatomic) IBOutlet UIWindow *window; 
@property (strong, nonatomic) TouchEvent_ViewController * myViewController;
@property (strong, nonatomic) TouchEvent_View *myView;

在 AppDelegate.m 中,我将“MainWindow.xib”与 myViewController 连接起来:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.backgroundColor = [UIColor whiteColor];

self.myViewController = [[[TouchEvent_ViewController alloc]
initWithNibName:@"MainWindow" bundle:nil] autorelease];

[self.window makeKeyAndVisible];



return YES;
}

在“Touch_Event_ViewController.m”中,我将 viewDidLoad 消息编码如下:

- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Hi! ViewController's viewDidLoad msg sent!");

TouchEvent_View * mView = [[TouchEvent_View alloc] initWithFrame:CGRectMake(0, 0, 300, 300)];
mView.backgroundColor = [UIColor blueColor];
[self.view addSubview:mView];
[mView release];

}

在“TouchEvent_View.m”中,我实例化了一个 UITapGestureRecognizer 对象并将其连接到处理程序方法,如下所示:

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

NSLog(@"[TouchEvent_View initWithFrame] sent!");

// Initialization code

//-----------------------
//Touch event declaration

//Single tap
UITapGestureRecognizer * singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SingleTap_Handler)];

singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
//singleTap.delegate = self;

[self addGestureRecognizer:singleTap];

}
return self;
}


-(void) SingleTap_Handler :(UITapGestureRecognizer *)GR
{
NSLog(@"Hi! You just touched the screen!");

}

当我将该项目编译并部署到我的 iPad3 中时,一切都按计划进行,直到 Touch 事件发生为止,但该事件不起作用。

我将以下消息打印到控制台窗口:

2012-08-26 14:03:59.589 Ex_TouchEvents_01[806:707] Hi! ViewController's viewDidLoad msg sent!
2012-08-26 14:03:59.593 Ex_TouchEvents_01[806:707] [TouchEvent_View initWithFram] sent!

但我没有看到“嗨,你刚刚触摸了屏幕!”触摸屏幕后的消息。此外,我也没有看到 View 区域的背景设置为蓝色。所以,我一定是漏掉了一些非常简单的东西。我一直在网上搜索,但我无法弄清楚我错过了什么。有人会好心指出我做错了什么吗?

最佳答案

我无法访问我的 Mac 来测试这个,但我相信你在这一行中遗漏了一个冒号。

UITapGestureRecognizer * singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SingleTap_Handler)];

它需要是:

UITapGestureRecognizer * singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SingleTap_Handler:)];

如果方法采用任何参数,则冒号是选择器的一部分。

关于objective-c - 连接到 UIVIew 的 UIGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12134501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com