iOS 9.3 touchesBegan/Ended 未在模拟器中触发

Posted

技术标签:

【中文标题】iOS 9.3 touchesBegan/Ended 未在模拟器中触发【英文标题】:iOS 9.3 touchesBegan/Ended not triggering in Simulator 【发布时间】:2016-09-03 17:48:34 【问题描述】:

(touchesBegan not called in a UIView subclass) 来自这个主题的一个扩展。

多年后,我遇到了与上述链接讨论类似的问题,试图将 2009 年的工作(已发布)应用程序升级到最新的 ios 9.3。我必须添加一个 UIViewController 以防止崩溃并让应用程序加载到模拟器中(XCODE MAC 最新,iPhone6)。重复调用 drawView 例程以按预期刷新屏幕,屏幕上的内容按设计进行动画处理。但是没有点击。 touchesBegan/Ended 永远不会被调用。我可以开始加载代码,但想知道是否立即想到任何事情,因为似乎每个人都有这个问题,或者类似的问题,在某些时候,它通常是一个非常简单的修复。谢谢。

更新这可能是额外的 uiViewController 与 uiView 混淆,但这是这些 APP 版本之间的添加,它是必需的,不再自动生成。

尝试将 uiView 设置为 firstResponder:

    - (id)initWithCoder:(NSCoder*)coder 
        if ((self = [super initWithCoder:coder])) 
            [self setUserInteractionEnabled:YES];
            [self setMultipleTouchEnabled:YES];
            [self becomeFirstResponder];

这些是 uiView 的 (glView) touch'ers:

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event  
    - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event  
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
        int page; [self adjustPage:&page with:0];
        ... 
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
        int page; [self adjustPage:&page with:0];
        ... 

这是我的看法@interface EAGLView : UIView <UIAccelerometerDelegate> 。并将这个 viewController 添加到委托中,使其在加载时不会崩溃。

    @implementation OpenGLESAppDelegate
    @synthesize window;
    @synthesize glView;
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
        UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
        self.window.rootViewController = vc;   
        glView.animationInterval = AHZ;
        [glView startAnimation];
        return YES;
        

没有编译或运行时错误。

【问题讨论】:

在真机上能正常工作吗? 很遗憾,最早可以配置XCODE的手机是iPhone4s,我的是iPhone4。所以它不会识别它。是模拟器还是半身像。 【参考方案1】:

我点击了!!!忘记将旧视图分配给新视图控制器:vc.view = glView; 现在,我需要弄清楚代码签名和配置才能在我的旧手机上获取它,但那是另一回事了。

【讨论】:

以上是关于iOS 9.3 touchesBegan/Ended 未在模拟器中触发的主要内容,如果未能解决你的问题,请参考以下文章

当 Ionic 3 应用程序在大于 9.3 的 ios 上运行时,Xcode 给出异常

iOS 9.3 到 iOS 10.0 的开发API不同点

如何支持 iOS 9.3 和 watchOS 2.2 的多个手表

iOS 9.3 系统字体名称是啥?

调用openURL后iOS 9.3冻结

NSTimer - 适用于 iOS 10 但不适用于 iOS 9.3