Tôi đang làm việc trên một ứng dụng mà tôi muốn hiển thị một trình đơn ngữ cảnh "NSMenu" bên cạnh vị trí chuột hiện tại. Tại thời điểm này, tôi biết làm thế nào để kích hoạt lệnh từ WebView để hiển thị menu ngữ cảnh, tôi dường như không thể hiển thị menu hiển thị ở vị trí chính xác trên màn hình. Có vẻ như tọa độ của tôi bị đảo ngược theo chiều dọc từ những gì tôi cần. Điều này có vẻ như một vấn đề đơn giản như vậy, nhưng tôi đã dành một chút thời gian cố gắng để tốt nhất một giải pháp "thực hành tốt nhất". Tôi có cần phải tìm ra màn hình con chuột và tính toán toạ độ y theo cách thủ công không?Làm thế nào tôi có thể hiển thị NSMenu tại con trỏ chuột?
Đây là mã thực sự đơn giản của tôi mà được gần:
- (IBAction)showMenu:(id)sender
{
CGEventRef ourEvent = CGEventCreate(NULL);
CGPoint point = CGEventGetLocation(ourEvent);
NSPoint wp = {0,0};
wp = [self.window convertScreenToBase:point];
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
NSLog(@"Location? x= %f, y = %f", (float)wp.x, (float)wp.y);
NSEvent *event = [NSEvent mouseEventWithType:NSLeftMouseUp location:CGPointMake(wp.x, wp.y) modifierFlags:0 timestamp:NSTimeIntervalSince1970 windowNumber:[_window windowNumber] context:nil eventNumber:0 clickCount:0 pressure:0.1];
//NSEvent *event = [NSEvent eventWithCGEvent:ourEvent];
NSMenu *theMenu = [[NSMenu alloc] initWithTitle:@"Contextual Menu"];
[theMenu insertItemWithTitle:@"Item 1" action:@selector(beep:) keyEquivalent:@"" atIndex:0];
[theMenu insertItemWithTitle:@"Item 2" action:@selector(beep:) keyEquivalent:@"" atIndex:1];
[NSMenu popUpContextMenu:theMenu withEvent:event forView:nil];
}
Ai đó có thể xin vui lòng cung cấp cho tôi mẫu mã cho cách tự nhiên nhất để thực hiện điều này.
Tôi nghĩ tôi đã cố gắng đó. Ngay trước mặt tôi. Cảm ơn! – David