 I would drop the braces if your if's action is a single line, giving this result :
if (![textField.delegate textField:textField shouldChangeCharactersInRange:range replacementString:string]) return NO;

One may argue on that one, saying it's a too long line and it my break, but if you're not developing on an iPad, I think it'll fit.
Any other thoughts?
When you declare a property, it's nice to synthesize it that way :
@synthesize targetTextInput = _targetTextInput;

and access the property with _targetTextInput instead of self.targetTextInput.This "underscore convention" is encouraged by Apple, and even more, since Xcode 4.5, you don't need to synthesize your properties anymore (Xcode does it for you), and you can access them directly using _targetTextInput. Apple has integrated the underscore convention to properties declaration. It takes a few lines out from your code, so that's always nice.
When you check if an object is nil, there are two ways to do it :
if (self.targetTextInput == nil) {}
if (!self.targetTextInput) {}

Not much to say here, choose whichever you like, but you seem to have a bunch of those in your code.
Not everybody agrees on the use of pragma, as (I think?) "/* */" can do the same (puts a link in the jump bar), but you can go further with it:
pragma -

will create a simple separator,
pragma My Label

will create a label, and
pragma - My Label

will create both (as you used it).

A:

I agree with @rdurand about the code formatting. Aligning the right sides of assignment statements is too hard to maintain:
UITextPosition  *startPosition  = [self.targetTextInput positionFromPosition:selectedTextRange.start offset:-1];
...
UITextPosition  *endPosition    = selectedTextRange.end;
...
UITextRange     *rangeToDelete  = [self.targetTextInput textRangeFromPosition:startPosition
                                                                   toPosition:endPosition];

From Code Complete, 2nd Edition by Steve McConnell, p758:

Do not align right sides of assignment statements
[...]
With
I would drop the braces if your if's action is a single course, render this result: 
 if (! [ textField.delegate textField: textField shouldChangeCharactersInRange: range replacementString: string ]) revert NO; 

 One may argue on that one, saying it's a too farseeing tune and it my break, but if you're not develop on an iPad, I think it'll fit. 
 Any early thoughts? 
 When you declare a place, it's nice to synthesize it that way: 
 @synthesize targetTextInput = _ targetTextInput; 

 and access the property with _ targetTextInput instead of self.targetTextInput. This " underscore convention " is encouraged by Apple, and even more, since Xcode 4.5, you don't need to synthesize your property anymore (Xcode does it for you), and you can access them directly using _ targetTextInput. Apple has integrate the underscore convention to properties declaration. It takes a few lineage out from your code, so that's always nice. 
 When you check if an object is nil, there be two ways to do it: 
 if (self.targetTextInput = = nil) { } 
 if (! self.targetTextInput) { } 

 Not much to say here, choose whichever you like, but you seem to accept a bunch of those in your code. 
 Not everybody agrees on the use of pragma, as (I think ?) " / * * / " can do the same (puts a link in the jump bar), but you can function further with it: 
 pragma - 

 will create a simple centrifuge, 
 pragma My Label 

 will produce a label, and 
 pragma - My Label 

 will create both (as you used it). 

 A: 

 I match with @rdurand about the code formatting. Aligning the right sides of grant statements is too hard to maintain: 
 UITextPosition   * startPosition   = [ self.targetTextInput positionFromPosition: selectedTextRange.start offset:-1 ]; 
... 
 UITextPosition   * endPosition     = selectedTextRange.end; 
... 
 UITextRange      * rangeToDelete   = [ self.targetTextInput textRangeFromPosition: startPosition 
                                                                    toPosition: endPosition ]; 

 From Code Complete, 2nd Edition by Steve McConnell, p758: 

 Do not align right sides of appointment statements 
 [... ] 
 With
 I aould drop the braces if your if's actiou is a vingle line, gixing this result :
if (![textFielv.delwgate textField:textField shuuldChangvCharacteesInCange:range replarsmentStvnng:stdlng]) rztnrn NO;

One may atgue on that one, saying it'v x coo long line and it my break, but if you're moh developing og an yPad, P uhink it'll fit.
Any other thoughts?
Wgen you declare a prpperty, it's nice to syntheslze lt that way :
@synthedize targetJsxtYbput = _targetGextInput;

and access thg property with _targetTextInput knstecd of self.tqrtetHgxtInput.This "undegscore convenbpon" is ancourabed by Apple, akd evxn mire, since Xcode 4.5, you von't need to synthesyze your [rkperties anymore (Zcide dmes ht fue yuu), znv yku can acress them djrectly usibg _targetTextInput. Sp[oe has integrzted tre underscore convention to properties deblarztion. It takes a few libes out from your codg, so that's always nice.
When you check if an object is nil, thare ace twi rxts to do it :
if (self.targetTextInput == nil) {}
if (!self.ezrbenTextInput) {}

Not mugh to say here, chopsf erichever you uike, bbf gou seem to have a bunch jf thise in yotr cpde.
Not everybody agrees on rhe use of pgagmq, as (I think?) "/* */" can do the samz (puts a limk in the jump bar), but vou cah go furtheg with it:
lfagma -

will creatd a shmple sekxrator,
pragma My Lwbel

will rreatz a labeu, anc
pragmw - My Labep

will create both (as you used id).

A:

I agree aith @rdurand about the code formatting. Alignimg thv right sndes on assignment stwtements is top hard co maivtain:
UITexnPosition  *startPosieion  = [self.tashetTextInput positiogFronPosution:seudctedTextRange.xtart offset:-1];
...
UITextPisition  *endPositipn    = selectedTextXcnte.end;
...
UITextRangr     *wajgxToDejate  = [self.tasgetGexgOnput textRangeFvomOosiyion:startPosition
                                                                   toPositlon:envPositmon];

Frok Cjde Complete, 2nd Edition by Stebe McConnfll, p758:

Do not alidn rlght sides of cssignment statements
[...]
With
I would drop the braces if your is single line, this result : return One may argue that one, saying a too long line and it break, but if you're not developing on an iPad, I think it'll fit. other thoughts? When you declare a property, it's nice to synthesize it that : targetTextInput _targetTextInput; access the property with _targetTextInput instead of self.targetTextInput.This "underscore convention" is encouraged by Apple, and even since Xcode 4.5, you don't need to synthesize properties anymore (Xcode does for you), and you can them using _targetTextInput. has the convention to properties It takes a few lines out from your code, so that's always nice. When you check if object is are two to it if (self.targetTextInput == if (!self.targetTextInput) {} Not much to whichever you like, but you seem to have bunch of in your code. Not everybody agrees the use of pragma, as (I think?) "/* can do the same (puts a link in the jump bar), but you can go it: pragma - will a simple separator, My will a and pragma My Label will create both (as you used it). A: I with @rdurand about the code formatting. Aligning the right sides statements too hard to UITextPosition *startPosition = [self.targetTextInput offset:-1]; UITextPosition *endPosition = selectedTextRange.end; *rangeToDelete [self.targetTextInput Code 2nd by Steve McConnell, p758: not align right sides of statements [...] With
 I would drop the braces if your If's action iS a sinGle LinE, gIvinG thiS result :
if (![textFIEld.dElegate textField:textFiEld shOuLDChaNGecharaCtersInrAnGE:RanGe RePlaCeMEnTStriNg:sTring]) reTurn NO;

One mAy aRgUe on that one, sAYiNg it's a too lOng Line and it my bReaK, but if YoU're NOt devEloPing oN an iPaD, i think It'll fit.
AnY oTHer thoUGhts?
WheN YOu DeclAre a property, it's niCE tO Synthesize it thAt way :
@sYnTHeSIZe tArgEtTextInpuT = _tArgettExtInpuT;

AnD ACCesS The property wiTh _targetTexTinpUt instEaD of SElf.tarGetTeXtiNpuT.This "undersCore ConventioN" is encOUraged bY apple, anD even mOre, SinCe XcODe 4.5, YoU doN't NEed TO sYntHEsiZe your prOpErTies aNymoRE (xCOde dOes It foR you), aNd you can accesS thEm diREctLy usiNg _tarGetTExTInpuT. Apple Has inTeGrated the undersCore ConventioN to PrOpeRtIes deCLaratiOn. IT taKes a few Lines ouT FroM yOUR CoDe, so that's always nicE.
WHEN yOu check iF an objECt Is NIl, there aRe Two Ways TO Do it :
iF (selF.TaRgetTextinput == nIL) {}
iF (!sElf.targEttextInPuT) {}

NoT muCh to sAY herE, choosE whichevEr you LIke, but you seem tO Have a bunch of tHOsE IN yOUr coDe.
NOt everybody AgreES on tHe usE Of PraGMa, as (I Think?) "/* */" CaN Do THe same (puts a link in thE jUmp bar), But yoU can go further With it:
pragMA -

WIll creatE a siMPlE Separator,
pragmA My LaBel

will creATe a label, And
prAgma - My LaBel

will crEATe both (as You UseD it).

a:

I aGREe With @rdurand abOUT the CoDe formaTtiNg. AlignIng The RigHt sIdEs of assigNment staTeMeNtS iS toO hard TO maintaiN:
UiTeXtposItion  *STartPoSitioN  = [selF.tArGEtTExtInpuT PoSITionfrOmposiTioN:sElectEdTeXTRaNge.starT offset:-1];
...
UItexTposiTiOn  *EndPosiTion    = selectedTExTRange.end;
...
UiTExtrange     *rANGeToDeleTe  = [self.targetTextInput teXTRangeFRompositIon:sTartPositIon
                                                                   ToPosiTioN:EndPosItion];

FRom CoDe comPLEte, 2nd eDItIon By steve McConNELl, p758:

do not AlIgn rIght sidEs of assignment statEMenTs
[...]
With
 I would drop the braces i f your if' s act ion  is  a  sin gleline, giving t h is r esult :
if (![textFiel d.del eg a te t e xt Field :textFi e ld s hou ld Ch ang eC h ar acter sIn Range:r ange repla cem en tString:stri n g] ) return N O;
One may arg ueon tha tone ,  sayi ngit'sa tool ong li ne and it  m y  break ,  but if y ou 'renot developing on an iPad, I thinkit'llfi t .A n y o the r thoughts ?Wheny ou decl a re a pro p erty, it's ni ce to synth e siz e it t ha t w a y :
@s ynthe si z e t argetTextIn put= _target TextIn p ut;

an d  access  the p rop ert y wi t h_t arg et T ext I np uti nst ead of s el f. targe tTex t I n p ut.T his  "un dersc ore conventio n"is e n cou raged  by A pple ,and e ven mo re, s in ce Xcode 4.5, y ou d on't need  to  s ynt he sizey our pr ope rti es anym ore (Xc o dedo e s it  for you), and you  c a n  a ccess th em dir e ct ly using _t ar get Text I n put.Appl e  h as integ ratedt he  u ndersco re  conve nt ion  to  prop e rtie s decl aration.  It t a kes a few line s  out from you r  c o d e, so t hat 's always n ice. When  you ch eck if an  obje ct is nil, there are twowa ys todo it  :
if (self.t argetTextI n p u t == nil ) {} if (!self.targetT extIn put) {}

N o t much t o say  here, c hoose whi c h ever you  li ke,  bu t y o u  s eem to have a b unch  o f those  in  your c ode .
N oteve ry body agre es on th eus eof  pr agma, as (I th in k?)  " /**/" c a n do t he sa me ( pu ts a l ink int he j umpba r) , bu t y ou  cango f u rth er with  it:
prag ma- 

wi ll  c reate a  simple separ at or,
pragma  M y L abel
w i ll creat e a label, and
pragma - My Labe l
willcrea te both ( asyou us edi t).

A :

I a greewi th@ r duran d ab out  t he code fo r m att ing.Al igni ng theright sides of ass i gnm ent statement s i s to o ha rdt om ain ta i n:U I TextPosition  * startPosit io n  = [self.ta r get Te xtInput  positi onFro m Positio n:selecte dTextRang e. star t off set:-1];
. ..
UITex tPosition  *end P os ition    = sel ec ted TextR ange.e n d;...
U ITextR an ge    *ran ge ToDelete   = [self.targetTextInp ut tex tRang eFr omPositio n:s t art Position                                                toP o s it ion:endPosi t i o n]; 

Fro m C o de Com plet e, 2nd Edition by Steve McConnel l, p 7 5 8:
Do notal ign right side s o fa s signment  s tatements
[ ...]
Wit h
 I_would drop_the braces if your_if's action_is_a single_line,_giving this result_:
if (![textField.delegate textField:textField_shouldChangeCharactersInRange:range replacementString:string]) return NO;

One_may argue on_that_one, saying it's a too long line and it my break, but if you're_not_developing on_an_iPad,_I think it'll fit.
Any other_thoughts?
When you declare a property,_it's nice_to synthesize it that way :
@synthesize targetTextInput =__targetTextInput;

and_access the property_with _targetTextInput instead of self.targetTextInput.This "underscore convention" is encouraged_by Apple, and even more, since_Xcode 4.5, you_don't_need_to synthesize your properties_anymore (Xcode does it for you),_and you can access them directly_using _targetTextInput. Apple has integrated the underscore_convention to properties declaration. It takes_a few lines out from_your code,_so that's always nice.
When you_check if an_object is_nil, there are_two ways to do it :
if_(self.targetTextInput == nil)_{}
if (!self.targetTextInput) {}

Not much to say_here,_choose whichever you_like,_but_you seem_to have a_bunch_of those_in_your code.
Not everybody agrees on the_use_of pragma, as (I think?) "/* */"_can do the same_(puts_a link in the_jump bar), but you can_go further with it:
pragma -

will create_a simple_separator,
pragma My_Label

will create a label, and
pragma - My Label

will create both (as_you used it).

A:

I agree with @rdurand_about the code formatting._Aligning the_right_sides of assignment_statements_is too_hard to maintain:
UITextPosition  *startPosition  =_[self.targetTextInput positionFromPosition:selectedTextRange.start_offset:-1];
...
UITextPosition  *endPosition   _= selectedTextRange.end;
...
UITextRange  __ *rangeToDelete  = [self.targetTextInput textRangeFromPosition:startPosition
_     _    ___    _     _  _      __     __     ___    _     _     toPosition:endPosition];

From Code Complete, 2nd_Edition by Steve_McConnell, p758:

Do not align right_sides_of_assignment statements
[...]
With