Vra

Ek is stadig leer Doel-C en Kakao, en die enigste manier wat ek sien so ver te vang belangrike gebeure in die Teks Uitsig is om te gebruik afvaardiging, maar ek het probleme met die vind van nuttige dokumentasie en voorbeelde oor hoe om te implementeer so'n oplossing.Kan iemand wys my in die regte rigting of aanbod'n paar eerste-hand help?

Was dit nuttig?

Oplossing

In die algemeen, die manier waarop jy dit implementeer is eenvoudig om die vereiste funksie om kontroleerder jou siening te voeg, en stel sy afgevaardigde. Byvoorbeeld, as jy wil kode uit te voer wanneer die oog vragte, jy moet net delegeer jou oog op die kontroles, en implementeer die awakeFromNib funksie.

So, om 'n sleutel druk in 'n teks aansig op te spoor, maak seker dat jou kontroleerder is delegeer die teks aansig se, en dan te implementeer hierdie:

- (void)keyUp:(NSEvent *)theEvent

Let daarop dat hierdie is 'n oorerflike NSResponder metode, nie 'n NSTextView metode.

Ander wenke

Net 'n wenk vir accentuering:

Moenie na vore te bring die hele teks oog in 'n keer - dis baie stadig. Moet ook nie na vore te bring die laaste geredigeer teks met behulp van -editedRange -. Dit is baie stadig te word indien die gebruiker 'n groot liggaam van die teks plak in die teks aansig

In plaas jy nodig het om die sigbare teks wat gedoen soos dit na vore te bring:

NSRect visibleRect = [[[textView enclosingScrollView] contentView] documentVisibleRect];
NSRange visibleRange = [[textView layoutManager] glyphRangeForBoundingRect:visibleRect inTextContainer:[textView textContainer]];

Toe voed jy visibleRange om jou te wys op-kode.

Dit is belangrik om ons te vertel wat jy regtig probeer om te bereik -. Die hoër-vlak van die doel wat jy dink die opneem van die belangrikste gebeure in 'n NSTextView sal aanspreek

Byvoorbeeld, wanneer iemand vra my hoe om belangrike gebeurtenisse vas te vang in 'n NSText wat hulle regtig wil weet, is hoe om te bekragtig insette in die veld. Dit is gedoen deur die oprigting van formatter die veld se 'n geval van NSFormatter (of een van die formatters ingesluit in kakao of 'n persoonlike een), nie deur direk die verwerking van toetsaanslagen.

So gegee dat byvoorbeeld wat jy regtig probeer om te bereik?

Ek het dit gedoen'n paar harde grawe, en ek het vind'n antwoord op my eie vraag.Ek sal kry op dit hieronder, maar te danke aan die twee fellas wat geantwoord.Ek dink dat Stapel Oorloop is'n fantastiese webwerf reeds-ek hoop meer Mac-ontwikkelaars hul weg te vind in'n keer die beta is oor-dit kan'n groot hulpbron vir ander ontwikkelaars op soek om die oorgang na die platform.

So, ek het, soos voorgestel deur Danny, vind my antwoord in die afvaardiging.Wat ek nie verstaan van Danny se boodskap is dat daar is'n stel van die afgevaardigde-enabled metodes in die delegering van voorwerp, en dat die afgevaardigde moet implementeer, het gesê die gebeure.En so is dit vir'n TextView, ek was in staat om uit te vind die metode textDidChange, wat bereik wat ek wou in'n selfs beter manier as om net die opneem sleutel druk sou gedoen het.So as ek die uitvoering van hierdie in my kontroleerder:

- (void)textDidChange:(NSNotification *)aNotification;

Ek kan reageer op die teks word geredigeer.Daar is, natuurlik, ander metodes beskikbaar, en ek is opgewonde om te speel met hulle, want ek weet ek sal leer om'n hele klomp soos ek doen.Weereens dankie, ouens.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top