Tôi đang sử dụng doubleClickAction
của số NSTableView
để hiển thị NSPopover
. Một cái gì đó như thế này:NSPopover - Ẩn khi tiêu điểm bị mất? (nhấp vào bên ngoài cửa sổ bật lên)
NSInteger selectedRow = [dataTableView clickedRow];
NSInteger selectedColumn = [dataTableView clickedColumn];
// If something was not selected, then we cannot display anything.
if(selectedRow < 0 || selectedColumn < 0)
{
NSLog(@"Invalid selected (%ld,%ld)", selectedRow, selectedColumn);
return;
} // End of something was not selected
// Setup our view controller, make sure if there was already a popover displayed, that we kill that one off first. Finally create and display our new popover.
DataInspectorViewController * controller =
[[DataInspectorViewController alloc] initWithNibName: @"DataInspectorViewController"
bundle: nil];
if(nil != dataPreviewPopover)
{
[dataPreviewPopover close];
} // End of popover was already visible
dataPreviewPopover = [[NSPopover alloc] init];
[dataPreviewPopover setContentSize:NSMakeSize(400.0f, 400.0f)];
[dataPreviewPopover setContentViewController:controller];
[dataPreviewPopover setAnimates:YES];
[dataPreviewPopover showRelativeToRect: [dataTableView frameOfCellAtColumn: selectedColumn row: selectedRow]
ofView: dataTableView
preferredEdge: NSMinYEdge];
Chỉ hoạt động tốt. Cửa sổ bật lên của tôi được tạo và xóa trên các ô mà tôi nhấp đúp vào. Vấn đề là, tôi muốn cửa sổ bật lên biến mất nếu tôi nhấp vào bất kỳ nơi nào bên ngoài nó (như một lần nhấp vào một ô khác). Tôi đã nhìn xung quanh, nhưng đối với cuộc sống của tôi không thể tìm ra cách để làm điều đó.
Đây là điều tôi cho là được xây dựng thành một cửa sổ bật lên, (Tôi khá chắc chắn nó nằm trong lớp iOS UIPopoverController
) vì vậy tôi chỉ tự hỏi nếu im thiếu một cái gì đó đơn giản.