- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确实正在尝试解决这个特定问题。已经很久了。
我有一个 Mac 应用程序,它完全位于状态栏中。每当我通过单击状态栏图标打开应用程序时,弹出窗口都会打开 contentViewController
。 contentViewController
有一个 tableView
和多个 tableView
单元格,它们是 NSTableCellView
的子类。单元格有一个按钮,我使用 NSTableViewCell
子类中的 mouseEntered
和 mouseExited
事件隐藏和取消隐藏该按钮。每当我单击单元格时,它都会将我带到网络,因为在默认网络浏览器中打开 URL
也会关闭 popOver
。当跟踪事件 mouseEntered
调用时,有一个 pointingHandCursor
被激活。当在NSTableCellView
子类中调用跟踪事件mouseExited
时,它也会更改为默认的arrowCursor
好的。每当我打开应用程序时,它都会正确显示 pointingHandCursor
因为事件被调用并且光标被更改。现在,我单击该单元格,该单元格在网络浏览器中打开了链接,并且 popOver 被关闭。现在,通过单击状态栏图标再次打开应用程序。现在最糟糕的事情发生了,我可以在 tableView 中滚动鼠标,但同时我可以看到光标没有更改为 pointingHandCursor。
我尝试在任何地方调用 acceptFirstMouse
事件和 becomeFirstResponder
。到处都是,在 contentViewControllers
View 的子类中,在 NSTableCellView
的子类中,在 View 窗口中......基本上无处不在。这对我没有帮助。
我还尝试添加全局鼠标监视器
并监听mouseMoved
事件,在此事件上我尝试设置becomeFirstResponder
和在
,这不起作用。 contentViewControllers
View 中接受FirstMouseMove
然后我尝试在 NSTableCellView
的子类中再次调用相同的监视器并执行相同的操作,但这也不起作用。
基本上这些都没有给我带来预期的行为。我想实现这个目标。
请帮帮我。如果您想要一个有关其工作原理的示例。按照这个,
下载产品搜索应用程序,打开它,点击任何帖子,它将在网络浏览器中加载该帖子,回来,打开应用程序,滚动,您可以看到pointingHandCursor
。但就我而言,打开 URL 后,指向 HandCursor
没有出现。 :(
最佳答案
Apple 的 NSTrackingArea 存在一个长期存在的错误。您必须验证当前鼠标位置是否仍然有效。
使用这个:
NSPoint cursorPt = [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] fromView:NULL];
不是这个:
[self convertPointFromBase:[ev locationInWindow]];
我在鼠标跟踪 UI 中使用类似于以下的代码。
- (void)resetCursorRects
{
[self adjustTrackingArea];
}
- (void) adjustTrackingArea
{
if ( trackingArea )
{
[self removeTrackingArea:trackingArea];
[trackingArea release];
}
// determine the tracking options
NSTrackingAreaOptions trackingOptions = NSTrackingEnabledDuringMouseDrag | NSTrackingMouseMoved |
NSTrackingMouseEnteredAndExited |
//NSTrackingActiveInActiveApp | NSTrackingActiveInKeyWindow | NSTrackingActiveWhenFirstResponder |
NSTrackingActiveAlways | NSTrackingAssumeInside | NSTrackingInVisibleRect;
NSRect theRect = [self visibleRect];
trackingArea = [[NSTrackingArea alloc]
initWithRect: theRect
options: trackingOptions
owner: self
userInfo: nil];
[self addTrackingArea:trackingArea];
// DOESN'T work on any OS version up to 10.10 self addToolTipRect:r owner:self userData:nil];
[controller mouseMoved:[NSApp currentEvent]]; // tracking area changes imply mouseMoved in its scroll view (virtually)
// IMHO a bug that apple doesn't call mouseMoved here.
}
- (void) mouseDown:(NSEvent*)evt { [controller mouseDown:evt]; }
- (void)mouseMoved:(NSEvent *)theEvent
{
[controller mouseMoved:theEvent];
if ( [theEvent type] == NSMouseMoved )
[super mouseMoved:theEvent];
}
- (void)mouseEntered:(NSEvent *)theEvent
{
// make sure current mouse cursor location remains under the mouse cursor
NSPoint cursorPt = [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] fromView:NULL];
// apple bug!!!
//NSPoint cursorPt2 = [self convertPointFromBase:[ev locationInWindow]];
//if ( cursorPt.x != cursorPt2.x )
// NSLog( @"hello old cursorPt" );
NSRect r = [self frame];
if ( cursorPt.x > NSMaxX( r ) || cursorPt.x < 0 )
{
[self mouseExited:theEvent];
return;
}
[self mouseMoved:(NSEvent *)theEvent];
[super mouseEntered:theEvent];
}
- (void)mouseExited:(NSEvent *)theEvent
{
if ( controller.mouseHoverKey )
{
controller.mouseHoverKey = nil;
[self setNeedsDisplay:YES];
}
// if ( mouseHoverRow >= 0 && mouseHoverRow < [self numberOfRows] )
// [self setNeedsDisplayInRect:[self rectOfRow:mouseHoverRow]];
// mouseHoverRow = mouseHoverColumn = -1;
//if ( [[self delegate] conformsToProtocol:@protocol(MouseHoverProtocol)] )
// [(id<MouseHoverProtocol>)[self delegate] resetMouseHoverInfo:self];
//if ( [theEvent type] == NSMouseExited )
// [[NSCursor arrowCursor] set];
[super mouseExited: theEvent];
}
关于objective-c - NSTableCellView 没有获得第一个焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37731966/
我需要一些帮助。这都是关于选项卡索引的。我有一个使用 document.getElementById("name").focus(); 的 JavaScript,其中 id="name"的 textb
这是我的第一篇文章,如果您想了解更多信息,请告诉我! 我正在使用选择列表和 jQuery Accordion 。当用户从列表中选择一个值时,它会使用 activate 方法打开折叠面板的相关部分。 除
JQM 1.3.2/ASP.NET MVC 4 当选择一个值时,焦点没有正确设置到输入字段,我错过了什么? 周围的典型 jqm-shadow 没有从选择中移除,输入得到阴影效果,但光标没有设置到输入字
我正在为 Android 开发一个播放列表应用程序,它有一个包含歌曲名称 (TextView) 作为其列表项的 ListView。 随着歌曲的播放,我想突出显示 ListView 中的项目,直到歌曲结
我在这里不知所措,以前从来没有遇到过这个问题。 我无法让 focus() 在任何浏览器中工作。我正在使用 jquery,甚至不能让它与标准的 javascript 一起工作。我也尝试添加超时但仍然没有
登录后我有一个文本字段。登录后光标将自动聚焦在该文本字段上。如何验证该文本字段上是否存在光标/焦点? 文本框的HTML代码如下: 最佳答案 您也可以尝试直接的 webdriver 方法: drive
我有一个框架和一个面板。我永久删除面板并添加另一个面板。添加新面板后,我需要 JTextField 来获得焦点。我该怎么做? 我尝试了 panel.requestFocus() 方法,但没有成功。 示
这个问题在这里已经有了答案: 关闭 13 年前。 Possible Duplicate: Trouble with jquery lavalamp 出于某种原因,无论我点击哪个链接,我的背景颜色都会
在我的表单验证中,在提交时,我正在验证表单,并找到未填充的元素并使用此函数进行聚焦:工作正常 switch (tagName) { case 'TEXT': if (!actualVa
我最近构建了一个 JS/CSS 模态系统。该元素使用的是 Bootstrap 模式,但通过在其中放置无法滚动或无法正确聚焦在移动设备上的表单和大量内容,将其推向了极限。 可以触发模态系统here单击大
我正在建立一个网站,但我想将图片放在背景中,但我无法将其放在我想要的位置。 我希望网页上图像的“焦点”位于图像中心几像素处。宽度我都能看出来,但是高度没有。 图像分辨率为“5760x3840px”。
这个问题在这里已经有了答案: using :focus pseudo class on li or other element else than a,input,button, etc (2 个
每当我创建编辑器的另一个实例(在我的例子中,通过 onkeypress 事件),我就会失去对创建新编辑器时正在输入的编辑器的关注。我怎样才能防止所有编辑都失去对任何事件的关注? 最佳答案 为此,Qui
我试图将焦点放在一个字段上,更改文本的颜色,但无论我尝试什么:它都不起作用。以下是 HTML: .register-section input:focus + .register-section la
我已经为微调器选择的变化设置了一个监听器。在监听器中,我想关注一个 EditText 字段。我使用了以下代码: text_other_msg.setFocusable(true); 它不起作用。我还尝
我在表单屏幕上有几个 UITextField 输入,其中一些有一个数字键盘显示,通过自定义弹出窗口显示。当用户在字段中前进时,我们会根据需要关闭或打开弹出窗口。在 iOS 11 中,似乎“第一响应者”
我在 jQueryUI 中输入焦点时遇到问题。我在按钮上使用了 hover() 方法并且它正在工作,但是输入上的 focus() 不起作用。我不知道为什么。这是代码和 fiddle $(documen
有没有办法在自动对焦完成后随时获取对焦点? 在 Apple 的示例代码中,他们使用: - (void)subjectAreaDidChange:(NSNotification *)notifi
如果我的焦点不在 textField 上,如何移除 NSTextField 上的焦点? 我有一个 NSTextField,我设置了操作:编辑结束时发送。单击 textField 后,当我单击 View
如何通过 jQuery 实现这一点? 当用户单击表单中的任何输入时,它就会获得焦点。当用户从任何输入中单击表单外时,它会变得模糊,但是,在表单本身的输入之间进行 Tab 键切换之间不会触发模糊。 对于
我是一名优秀的程序员,十分优秀!