【问题标题】:Second UIWindow does not get any touch events第二个 UIWindow 没有得到任何触摸事件
【发布时间】:2017-04-26 22:02:14
【问题描述】:

我创建了第二个窗口以在我的应用中显示自定义通知:

@property (strong, nonatomic) UIWindow *window2;

这就是我让它出现的方式:

self.window2 = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, SCREEN_BOUNDS.size.width, 50)];
self.window2.backgroundColor = [UIColor blackColor];
self.window2.windowLevel = UIWindowLevelAlert;
self.window2.rootViewController = custonViewController;
[self.window2 makeKeyAndVisible];

问题是 custonViewController 内没有触摸事件有效。 我尝试了一切,甚至子类UIWindow 并覆盖(void)sendEvent:(UIEvent *)event。但它也不起作用。

如何让我的应用程序删除以知道 window2 已被触摸/点击? 有什么想法吗?

【问题讨论】:

  • 您使窗口尺寸变小并远离屏幕。为什么你认为触摸会起作用?
  • 不,我不知道。它出现在屏幕内,我只是错误地输入了-50..我刚刚更正了它..
  • 请停止大喊大叫。你仍然有一个问题,你的窗口的高度只有 50 点高。这真的是你想要的吗?这几乎没有覆盖状态栏。
  • 是的,这就是我想要的。它有足够的空间来捕获触摸/点击事件。它结束了一切。这正是 Whatsapp 和许多其他科技公司所做的。

标签: ios objective-c uiwindow


【解决方案1】:

没关系。我发现发生了什么事。 我正在动画 UIWindow 自动出现和消失,在从前一个动画完成后的一系列动画中,延迟设置了几秒钟。 它锁定了整个动画序列中的所有触摸事件。 所以我将动画分开并将其放在异步线程中,因此它可以正常接收触摸。 再见!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2019-11-02
    相关资源
    最近更新 更多