2012-06-23 3 views
0

У меня есть окно, которое содержит разделенный вид. Один из «разделов» содержит контурный вид. У меня есть оконный контроллер (который является владельцем файла для XIB окна). Контроллер окна является делегатом и источником данных в виде схемы.Mouse Event in Outline View

Когда я вызываю метод -(void)mouseDown:(NSEvent *)e в оконном контроллере, только панель инструментов отвечает на метод - в виде схемы нет.

Как получить события мыши, например. mouseDown, вид контура?

ответ

1

Чтобы получить событие мыши в режиме структуры:

  1. Подкласс в структуре.
    • В Interface Builder (IB)> Панель Библиотека> вкладка Классы выберите NSOutlineView
    • правой кнопкой мыши и выберите NSOutlineView «New Подкласс ...»
    • Выполните следующие всплывающих окон выбора «Generate исходных файлов» и добавьте филсов к вашему проекту
    • Выберите NSOutlineView
    • в Inspector Panel> вкладка Идентичность> класс Идентичность> класс выбрать новый класс
  2. осущ ление ваш метод события мыши

    • В Xcode> ваш новый подкласс вашей точки зрения контурной> файл реализации (.m) введите метод, например,

      (void)mouseDown:(NSEvent *)theEvent { 
          /* CODE YOU WANT EXECUTED WHEN MOUSE IS CLICKED */ 
          NSLog(@"Mouse down occurred"); 
          // call this to get the usual behaviour of your outline 
          // view in addition to your custom code 
          [super mouseDown:theEvent]; 
      } 
      

Это может быть полезно знать, что можно получить события мыши с помощью [NSEvent modifierFlags]. Это будет работать не только для представления схемы, но и для просмотра всего приложения. Например, в оконном контроллере (упомянутом в вопросе) я мог бы включить код типа:

if ([NSEvent modifierFlags] == NSAlternateKeyMask) { // if the option key is being pressed 
      /*SOME CODE*/ 
}