我需要在显示后视图时禁用前视图上的用户交互.发现其他人问同样的事情,但无法真正理解在哪里或如何实现我见过的代码.
例如:我从链接中找到了此代码,
- (void)revealController:(SWRevealViewController *)revealController
willMoveToPosition:(FrontViewPosition)position {
if(position == FrontViewPositionLeft) {
self.view.userInteractionEnabled = YES;
} else {
self.view.userInteractionEnabled = NO;
}
}
- (void)revealController:(SWRevealViewController *)revealController
didMoveToPosition:(FrontViewPosition)position {
if(position == FrontViewPositionLeft) {
self.view.userInteractionEnabled = YES;
} else {
self.view.userInteractionEnabled = NO;
}
}
Run Code Online (Sandbox Code Playgroud)
还发现其他一些链接
我有这个代码,但不确定插入此代码的正确位置.我已经尝试在我的前/后视图中添加它,并且在SWRevealViewController方法中也没有成功
感谢有人能指出我正确的方向.
user-interaction uiviewcontroller ios swrevealviewcontroller
在我的应用程序中,我有一些动画.例如,我在主菜单中有一个按钮,当你点击它时动画开始(比如移动一些地方等),在动画结束时它会导航到另一个页面.我需要的是在动画期间禁用用户交互.因为在动画期间如果我按下按钮的起点,应该导航的页面打开两次.总而言之,如果我在动画过程中不让任何用户交互,我的问题就会得到解决.我怎样才能做到这一点?
一些背景:我正在编写一个具有多种形式的应用程序等.用户必须登录才能使用大多数功能,这一直到目前为止工作正常.但是,现在,客户端已请求在一定量的非活动时间之后用户将被注销.问题是用户仍然可以在计算机上处于活动状态,而不是在我的应用程序中.为了清楚起见,我必须在用户处于非活动状态时将用户注销,即使他仍在与桌面交互.
首先我认为这很简单.只需记住上次操作的时间,在计时器中将其与当前时间进行持续比较,如果超过允许时间,则注销用户.但是我已经意识到找出最后一次动作时间可能并不那么简单......
当然我可以复制粘贴之类的东西
Program.LastActionTime = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)
在每个OnChange,OnClick等事件中...但不仅因为应用程序的大小,这将是一项大量的工作......这也是一个非常糟糕的做法,我相信它会是忘记了至少一次,使整个事情变得不可靠(并且看起来很破碎,这个bug几乎不可能重现!)
那么,有更好的方法吗?
存储接口选择的广泛接受的方式是什么,例如"不再显示此消息"设置,以及用户的任何其他特定于接口的选择?注册?设置文件?我也可以将它们存储在数据库中,因为我的程序已经可以访问一个.
编辑 我当前的程序是本地的,但是将来我想把它做成基于网络的.
我想在WPF DataGrid元素中处理SelectionChanged事件,仅用于用户交互/选择,如果是由于绑定或其他设置值,则跳过.知道我将如何确定选择是否被用户交互更改?或者任何可以执行类似任务的替代事件?
我知道对于传统的UIViews,我可以将"启用用户交互"标志设置为NO,并且视图将不再响应触摸,让它们下面的视图接收触摸.
有没有办法在Sprite Kit中实现相同的"点击"功能?到目前为止,我只看到人们使用"触摸开始",获得重点,并在那一点询问场景节点.
这种方法的问题是 - 如果我想在精灵之上添加叠加(如怪物生命点等),它们也会响应触摸.到目前为止,我试图通过为不同的节点创建自定义类,然后使用非常大的if语句来检查每个节点的类来避免这个问题.
有没有更好的方法来实现精灵套件的"点击"功能?
我想检测用户最后一次与屏幕交互的时间.我对任何恶意软件/间谍软件都不感兴趣,只需要计算自用户上次点击屏幕以来经过了多长时间.
目标是实现类似于键盘锁的功能.
我一直在做一些研究,并在网站上进行一些问答(例如Android最佳方式检测和处理用户不活动,Android:检测用户的一般用途等)但是当涉及到检测用户在android中的交互时我避开了找不到我需要的东西.
提前致谢.
在我的应用程序中,我得到了一个 thrad,它每 60 秒检查一次来自网络服务(在 onCreate() 中定义)的数据:
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(PERIOD);
if(condition) do_something();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
Run Code Online (Sandbox Code Playgroud)
另外,在用户不活动一段时间后,我得到了一个执行方法的处理程序:
private Handler disconnectHandler = new Handler();
private Runnable disconnectCallback = new Runnable() {
@Override
public void run() {
do_something_else();
}
};
public void resetDisconnectTimer(){
disconnectHandler.removeCallbacks(disconnectCallback);
disconnectHandler.postDelayed(disconnectCallback, TIMEOUT);
}
@Override
public void onUserInteraction() {
super.onUserInteraction();
resetDisconnectTimer();
}
Run Code Online (Sandbox Code Playgroud)
现在我遇到了在 PERIOD 之后调用 onUserInteraction() 的问题,而不仅仅是在 TIMEOUT 之后。有什么想法可以让两者都工作吗?
提前致谢。
我知道这个问题已经被回答过多次,但我没有发现任何一个令人满意,而且肯定不优雅。
问题是 OnItemSelected 不仅在用户选择某个项目时被触发,而且在以编程方式设置选择时也会被触发。
一些答案建议在程序员为微调器设置值时设置一个标志。然而,有时其他 Android 代码会在您的代码之外设置该值。
android 设置该值的常见位置是在微调器实例化时。一些答案解决了这个特定问题。然而,Android 有很多地方会崩溃并重新实例化旋转器。追踪所有这些人并不优雅。
所以问题是:如何将 OnItemSelectedListener 代码仅附加到用户与 UI 交互所做的选择?
下一步是扩展 Spinner 并开始覆盖方法,但这当然意味着弄乱 API(我不想这样做,或者我至少想让其他用户与我一起处理它)
任何人都可以帮助我解决这种情况。
我已经OnUserInteraction()为Android Activity 实现了方法,对我来说效果很好。
但是我也想要它。我Fragments怎么可以打电话 OnUserInteraction()或是否有其他方式可以识别userInteraction出UI。
user-interaction ×10
android ×4
ios ×3
iphone ×2
objective-c ×2
animation ×1
c# ×1
postdelayed ×1
sleep ×1
spinner ×1
sprite-kit ×1
wpf ×1