我已经想出如何使用setOnClickPendingIntent来检测和处理视图上的按下,但我找不到任何方法来检测长按(或双击).我想根据用户是按下还是长按来执行不同的操作.这可能吗?
谢谢.
我想在这个视图中移动一些UIView按钮.我可以这样做:
- (void)viewDidLoad
{
[button addTarget:self action:@selector(dragBegan:withEvent:) forControlEvents: UIControlEventTouchDown];
[button addTarget:self action:@selector(dragMoving:withEvent:) forControlEvents: UIControlEventTouchDragInside];
[button addTarget:self action:@selector(dragEnded:withEvent:) forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
}
Run Code Online (Sandbox Code Playgroud)
.
- (void)dragBegan:(UIControl *)c withEvent:ev {
UITouch *touch = [[ev allTouches] anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
}
- (void)dragMoving:(UIControl *)c withEvent:ev {
UITouch *touch = [[ev allTouches] anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
//This is moving view to touchPoint
SimpleView.center = touchPoint;
}
- (void)dragEnded:(UIControl *)c withEvent:ev {
}
Run Code Online (Sandbox Code Playgroud)
我怎么能只在那时移动它,如果我长按该按钮?
我试图在长按时创建的自定义小部件上显示菜单上下文(点击时有另一种行为)。
我尝试将 GestureDetector 与 onLongPress 结合使用并使用函数 showMenu,但它在角落显示菜单,而不是在按下的小部件上方。我已经看到了一种解决方法来获取小部件的位置并将其传递给 showMenu,但对我来说它看起来很混乱。
return new GestureDetector(
child: _defaultBuild(),
onTap: onTap,
onLongPress: () {
showMenu(
items: <PopupMenuEntry>[
PopupMenuItem(
//value: this._index,
child: Row(
children: <Widget>[
Text("Context item1")
],
),
)
],
context: context,
position: _getPosition(context)
);
}
);
RelativeRect _getPosition(BuildContext context) {
final RenderBox bar = context.findRenderObject();
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
final RelativeRect position = RelativeRect.fromRect(
Rect.fromPoints(
bar.localToGlobal(bar.size.bottomRight(Offset.zero), ancestor: overlay),
bar.localToGlobal(bar.size.bottomRight(Offset.zero), ancestor: overlay),
),
Offset.zero & overlay.size,
);
return position;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用 PopupMenuButton 但无法在 LongPressed 上显示菜单。 …
对于使用monkeyrunner进行自动化测试,我想从最近的应用程序列表面板启动一个应用程序,而通过monkeyrunner命令长按HOME键后无法打开该面板。
device.press('KEYCODE_HOME',MonkeyDevice.DOWN)
Monkeyrunner.sleep(5)
device.press('KEYCODE_HOME',MonkeyDevice.UP)
Run Code Online (Sandbox Code Playgroud)
通过上面的代码,按下就相当于短按。手动长按HOME键即可打开面板。这个问题有解决办法吗?
谢谢。
谁能告诉我如何用C#长时间按下Windows应用商店?我可以使用“轻按”手势没有问题,但是当我替换为“ tapped”手势时
TappedRoutedEventArgs
,HoldingRoutedEvent
它并不会注册保持手势。我正在用笔记本电脑进行测试,是否可能无法识别鼠标保持事件?
我假设Windows Phone 7具有类似的功能,但是它们主要用于Silverlight,而Windows 8不使用。任何链接/示例都将对您有很大帮助!
谢谢!
在我的应用中,我需要使用一键并长按一个按钮
单击某些东西(调用Itemclick())并长按以录制声音
并使用以下代码:
send.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
{
recording =false;
t=new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if(count>=2)
t.cancel();
count++;
}
});
}
}, 1, 1000);
break;
}
case MotionEvent.ACTION_MOVE:
{
if(count >=2&&!recording)
{
recording=true;
count=0;
Rec=new Recorder();
Rec.startRecord();
}
break;
}
case MotionEvent.ACTION_UP:
{
t.cancel();
if(!recording)
{
count=0;
Itemclick();
break;
}
recording=false;
Rec.StopRecord();
db.open();
db.insert_offline(Rec.getName(), true, false);
listItems.add(Rec.getName()); …
Run Code Online (Sandbox Code Playgroud) 我需要在整个应用程序中处理UILable上的长按动作/手势,它应该显示这样的菜单,并带有自定义菜单选项:
根据苹果界面指南,文本字段,文本视图,Web视图和图像视图只能启用此菜单.
是否可以在UILabel中为整个应用程序添加此类操作,并通过添加自己的菜单选项打开自定义菜单.
这是从 flutter TextField 获取 onLongpress 调用的方法吗?它默认有一个 onTap 回调,但我需要 onLongpress ?
TextField(onLongpress : ()=>...
Run Code Online (Sandbox Code Playgroud)
详细行为:
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect imageRect = (CGRect){105, 180, 110, 110};
UIImage *image = [UIImage imageNamed: @"sasuke.png"];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:imageRect];
[imageView setImage: image];
UILongPressGestureRecognizer *longGnizer=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longGo:)];
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer:longGnizer];
[self.view addSubview:imageView];
}
- (void)longGo:(UILongPressGestureRecognizer *)aGer{
if(aGer.state==UIGestureRecognizerStateBegan) {
NSLog(@"%s",__func__);
}
}
Run Code Online (Sandbox Code Playgroud)
这是代码,但是func longGo永远不会工作,为什么?当我使用[self.view addGestureRecognizer:longGnizer]时,它确实有效.
long-press ×9
ios ×3
android ×2
flutter ×2
objective-c ×2
gesture ×1
monkeyrunner ×1
swift ×1
textfield ×1
uilabel ×1
uiview ×1
windows ×1
windows-8 ×1