gpt4 book ai didi

ios - 如何在 iOS 8 的子类 UIView 中调用 touchesBegan?

转载 作者:行者123 更新时间:2023-11-28 21:41:26 24 4
gpt4 key购买 nike

我要touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event在子分类中被调用 UIView .

AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

[self.window setRootViewController:[[UIViewController alloc] init]];

CGRect firstFrame = self.window.bounds;
HypnosisView *firstView = [[SubClassedView alloc] initWithFrame:firstFrame];

[self.window addSubview:firstView];

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

return YES;
}

子类 View .h:

#import <UIKit/UIKit.h>

@interface SubClassedView : UIView

@end

SubClassedView.m:

#import "SubClassedView.h"

@implementation SubClassedView

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
NSLog(@"Here!");
}

@end

当我触摸屏幕时,控制台没有输出“这里!”正如我认为的那样。

我使用最新的 Xcode 7 beta 5。

我怎样才能得到 touchesBegan以正确的方式被调用?

非常感谢。

最佳答案

您将添加 HypnosisView 作为窗口的 subview ,而不是作为 Root View Controller View 的 subview 。您的 Root View Controller 应该是一个 UIViewController 子类,这样您就可以修改它的行为来构建您的应用程序的导航流。

子类 UIViewController,并将您的 HypnosisView 作为其 View 层次结构中的 subview 添加:

@interface MyViewController : UIViewController
@property(nonatomic, strong) HypnosisView *hypnosisView;
@end

@implementation MyViewController

- (void)viewDidLoad {
[super viewDidLoad];

self.hypnosisView = [[HypnosisView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:hypnosisView];
}

@end

然后在您的应用委托(delegate)中,将您的 View Controller 子类设置为 Root View Controller :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

MyViewController *myVC = [[MyViewController alloc] init];
[self.window setRootViewController:myVC];

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

return YES;
}

不过,这是一种相当老派的做事方法。您有什么理由不使用 Storyboard来构建您的界面吗?

关于ios - 如何在 iOS 8 的子类 UIView 中调用 touchesBegan?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31891482/

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