gpt4 book ai didi

ios - 点击按钮后立即禁用用户与不同 ui 元素的交互

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

我需要在用户点击按钮后立即禁用所有用户与其他 ui 元素的交互。我想阻止用户一次触发多个操作,例如按下按钮并点击 Collection View 中的元素或点击 UIBackBarButton。

作为示例,我创建了一个调用此方法的 UIBarButtonItem,它禁用 self.view 和 UIBarButtonItems 的用户交互,并在 1 秒后再次启用它们:

- (void)buttonPressed:(id)sender
{
self.view.userInteractionEnabled = NO;
self.navigationItem.backBarButtonItem.enabled = NO;
self.navigationItem.rightBarButtonItem.enabled = NO;

// ... show an alert view

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
self.view.userInteractionEnabled = YES;
self.navigationItem.backBarButtonItem.enabled = YES;
self.navigationItem.rightBarButtonItem.enabled = YES;
});

}

问题是,如果我几乎同时点击此按钮和例如后退按钮,它会显示警报 View 并弹出当前 viewController。我假设它会等待几毫秒来确定此事件是单点触摸还是多点触摸事件(例如双击),但我不知道如何处理。

我该怎么做才能在用户点击此按钮后立即禁用用户交互?

最佳答案

UIAlertView 的出现应该阻止进一步的用户交互。不过,您是说有一个非常短的窗口(“几毫秒”是用户认为的微小延迟),用户可以在其中触摸其他按钮,并导致奇怪的行为。好的,没有测试,我会认为这是真的。

一种比较蛮力的方法是在相关按钮上将 exclusiveTouch 设置为 YES。查看Event Handling Guide以获得完整的解释。基本上,当 exclusiveTouch 属性为 YES 的 View 正在跟踪触摸时,没有其他 View 可以跟踪触摸。同样,这样的 View 可能不会开始跟踪触摸,除非没有其他 View 正在跟踪触摸。

旁注:我认为您正在使用 dispatch_after 将 block 放入主队列。通常,如果您打算将某些内容放在主队列中以立即执行,您只需使用 dispatch_async

编辑: 当提出这个问题时,它没有指定 UIBarButtonItem 的使用。此答案仅适用于 UIView 或其后代。

关于ios - 点击按钮后立即禁用用户与不同 ui 元素的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27401220/

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