2011-02-05 10 views
7

Pomimo istnienia dokumentu wytycznych interfejsu HIG (Human Interface Guidelines), wiele wysokiej jakości aplikacji biurkowych dla komputerów Mac używa niestandardowych elementów sterujących. Moje pytanie brzmi: jakie jest najlepsze podejście do rozpoczynania podklasowania kontroli rozwoju kakao? Zaskakuje mnie, jak mało (dobrych) informacji na ten temat jest. Jaką ścieżkę najlepiej przejść, aby nie zakończyć się miłym, ale na wpół zepsutym sterowaniem?Efektywnie podklasy standardowe sterowanie kakao

Odpowiedz

32

Oto lista kontrolna:

  • Upewnij się, że sterowanie działa poprawnie na podwójnym rozmiar. Aby to przetestować, użyj Quartz Debug. Będziesz chciał przetestować zarówno rysowanie (we wszystkich stanach - normalne, wybrane, naciśnięte, wyłączone i dowolne inne), jak i poprawność działania (które trafiają w testy, w których rzeczy pojawiają się na ekranie/innym urządzeniu docelowym).
  • Aby uzyskać dodatkowe środki, upewnij się, że kontrola działa poprawnie przy 1,5 (lub innej, podobnie nieintegralnej) rozdzielczości.
  • Sprawdź, jak działa standardowe sterowanie po kliknięciu. Prawdopodobnie i tak to zrobisz. Wykonaj, jak robi to standardowa kontrola.
  • Sprawdź, jak działa standardowe sterowanie po kliknięciu (myszka w środku, mysz poza domem).
  • Sprawdź, jak działa standardowa kontrola po ciemnej stronie kliknięcia (mysz na zewnątrz, mysz w środku).
  • Sprawdź, jak działa standardowa kontrola podczas przeciągania.
  • Test powyżej czterech za pomocą innych przycisków myszy (w prawo i w środku).
  • Sprawdź, co robi standardowa kontrola podczas przewijania za pomocą kółka przewijania. Przetestuj także przesunięcie + przewiń i na myszy, która je ma (np. Większość myszy Logitech), przewiń przyciski w lewo/w prawo.
  • Sprawdź, co robi standardowa kontrola, gdy przewiniesz dwoma palcami w każdej osi i obu osiach.
  • Sprawdź, co robi standardowa kontrola podczas szczypania i odpinania.
  • Sprawdź, co robi standardowa kontrola, przesuwając trzema lub czterema palcami w każdej osi.
  • Sprawdź, jak działa standardowa kontrola z włączonym "Pełnym dostępem do klawiatury". Czy możesz wejść w to? Czy możesz go nacisnąć za pomocą spacji? Czy możesz go wprowadzić za pomocą klawisza Return? Czy możesz tego uniknąć?
  • Sprawdź, jak standardowy kontroler odpowiada na kwerendy dostępności. Użyj inspektora dostępności. Zobacz Accessibility Programming Guidelines for Cocoa, aby uzyskać informacje na temat reagowania na zapytania o dostęp i komunikaty pod kontrolą.
  • Sprawdź swoją aplikację - w tym między innymi niestandardowe elementy sterujące - w VoiceOver. Rozłóż się i spróbuj użyć aplikacji z samym VoiceOver.
  • Jeśli dotyczy, przetestuj drukowanie swojego widoku. Możesz wydrukować do Podglądu, jeśli nie chcesz zabić drzewa dla swojego procesu rozwoju.
  • Drukowanie testowe w innych rozmiarach papieru. Jeśli jesteś w Stanach Zjednoczonych, przetestuj A4; w przeciwnym razie przetestuj US Letter. Przetestuj jeszcze inne rozmiary papieru (takie jak Legal i A3), jeśli czujesz się dobrze.
  • Jeśli wdrażasz rolkę (poor you), sprawdź, czy twój wałek reaguje poprawnie na preferencję "Przejdź do (następna strona |, która została kliknięta)" w okienku Wygląd w Preferencjach systemowych. "Prawidłowo" oznacza, że ​​powinien zrobić to, co wybrał użytkownik.
  • Upewnij się, że poprawnie implementuje wszystkie ustawienia czterech strzałek przewijania: One at each end (Mac style), both at the lower/left end (NeXT style), both at the upper/right end, and both at each end (power user style). Jak zawsze, musisz prawidłowo dobrać i poprawnie wykonać test lub poprawnie zareagować.(Sugerowane: by @radiofreelunch/by David Dunham)
  • Ponadto, jeśli wdrażasz rolkę, upewnij się, że poprawnie odpowiada ona ustawieniu "Płynne przewijanie".
  • Sprawdź, czy poprawnie reaguje na różne ustawienia prędkości przewijania.
  • Jeśli implementujesz jakieś pole tekstowe lub dowolny widok odpowiadający na specjalny klawisz skrótu (np. Enter, aby wysłać wiadomość w linii wejściowej), przetestuj od prawej do lewej (hebrajski/arabski) wprowadzanie tekstu i alternatywne metody wprowadzania. Przeglądarka postaci to dobry początek.
  • Sprawdź także, czy nie łamiesz ctrl-q. Na przykład, ctrl-q, zakładka zawsze powinna wpisywać znak tabulacji. To samo zwykle dotyczy opcji + (klucz), takiej jak opcja-return w linii wejściowej.
  • Sprawdź, czy prawidłowo reaguje na różne ustawienia powtarzania klawiszy.
  • Jeśli zaimplementujesz niestandardowe skróty klawiaturowe (⌘ + zero lub więcej innych modyfikatorów + jeden lub więcej klawiszy znakowych) za pomocą innych niż obsługa standardowych skrótów menu Cocoa, przetestuj niestandardowe zachowanie skrótów pod Dvorakiem. Nie ma szybszego sposobu na zbrukanie naszego postrzegania twojej aplikacji niż na odpowiedź to "przez rzucenie palenia.
  • Pokaż swoją aplikację użytkownikom, którzy nigdy jej nie używali i nie widzieli wcześniej żadnych makiet. Zdyskwalifikować programistów. Jeśli nie uznają twojej kontroli za (cokolwiek powinno być), przeprojektuj ją. Jeśli kiedykolwiek powiesz "przewijanie jest tutaj" lub "musisz to kliknąć", natychmiast zawiedziesz.
  • Sprawdź, czy kontrola odpowiada (lub nie odpowiada, jeśli odpowiedź będzie niebezpieczna), gdy aplikacja jest w tle. (Suggested by @chucker.)
  • Sprawdź, czy kontrola odpowiada, ale nie przynosi aplikacji do przodu, gdy aplikacja jest w tle, a użytkownik klika ją przyciskiem ⌘. (Suggested by @chucker.)
  • Test zmieniający rozmiar widoku. Między innymi zapewni to poprawne ustawienie maski autoreize. Poszukujesz także rysowania zniekształconych elementów, luk, itp. (Część tego suggested by @Bagelturf.)
  • Jeśli twoja kontrola jest w rzeczywistości formantem, wyślij go sizeToFit i upewnij się, że robi to, co trzeba. (Suggested by @Bagelturf.)
  • Jeśli pracujesz ze współrzędnymi myszy, nie zakładaj, że będą to liczby całkowite. Upewnij się, że poprawnie obsługujesz liczby ułamkowe, zera (dodatnie i ujemne) oraz liczby ujemne. (Część tego suggested by @Bagelturf.)
  • Możesz również rozważyć podział kontroli na kontrolę i komórkę. W tym ostatnim przypadku wykonaj również wszystkie te testy na komórce osadzonej w NSMatrix i NSTableColumn.
  • Jeśli kontrola ma menu, sprawdź, co dzieje się, gdy kontrolka znajduje się na jednym lub kilku krawędziach ekranu. Menu powinno się przesunąć, aby nie spadło poza obszar ekranu.
  • Jeśli kontrolka zawiera menu, sprawdź, czy użytkownik może wprowadzić go za pomocą klawisza strzałki w dół podczas korzystania z opcji "Pełny dostęp do klawiatury". Jeśli jest to również pole tekstowe (np. Pole kombi), sprawdź, czy dzieje się tak tylko wtedy, gdy użytkownik naciśnie strzałkę w dół na końcu tekstu; w przeciwnym razie normalne zachowanie pola tekstowego powinno rządzić: Naciśnięcie w dół linii, która nie jest ostatnią linią, powinno przesunąć kursor w dół linii, a naciśnięcie ostatniej linii powinno przesunąć się na koniec linii.
  • Jeśli kontrola ma menu, sprawdź, czy pozostaje otwarte po kliknięciu i nie zamyka się natychmiast po otwarciu. There is a function you can use to do this correctly i it is available in 64-bit.
  • Jeśli twoja kontrola posiada menu, sprawdź, czy jest nawigowalna (wszystkie cztery klawisze strzałek + Dom, Koniec, Strona w górę, Strona w dół), użyteczny (klawisz spacji/naciśnij klawisz powrotu) i można go anulować (esc) za pomocą klawiatury.
+0

Wow. Wielkie dzięki, Peter, za poświęcenie czasu na napisanie tego. To będzie bardzo przydatne. Wielkie dzięki! –

+0

Niezły! Dzięki za tę wyczerpującą listę – Jay

+0

Ktoś ma pojęcie, jak to zrobić? Nie można znaleźć nigdzie tego, do czego służy API: _testuj, że twój wałek reaguje poprawnie na "Przejdź do (następnej strony |, która została kliknięta)" preference_ – mekentosj

3

Trudno dodać cokolwiek do listy Piotra, ale jeśli robisz pasek przewijania, upewnij się, że obsługuje wszystkie zboczone miejsca na strzałkach przewijania (jak DoubleBoth).

+0

Yup. @radiofreelunch na Twitterze zasugerował to na około czas, i właśnie dodałem to do mojej odpowiedzi Dziękuję wam obojgu –

+1

@radiofreelunch to ja :) –