Alterar cor do cursor no UITextField

Como posso mudar a cor do cursor no meu UITextField ?

Com o iOS 7, você pode simplesmente alterar a propriedade tintColor do UITextField . Isso afetará a cor do cursor de texto e a cor de realce da seleção de texto.

Você pode fazer isso no código …

 textField.tintColor = [UIColor redColor]; 

… ou no Interface Builder:

captura de tela mostrando como modificar o tom de um campo de texto no construtor de interface

Você também pode fazer isso para todos os campos de texto no seu aplicativo usando o proxy de aparência do UITextField :

 [[UITextField appearance] setTintColor:[UIColor redColor]]; 

Abaixo estão as capturas de canvas do simulador mostrando o que um campo de texto do iOS 7 normalmente normal se parece com seu matiz definido como vermelho.

Captura de canvas do cursor de texto:

Captura de tela do cursor de texto

Captura de canvas de seleção de texto:

Captura de tela de seleção de texto

No iOS, o UITextfield tem uma propriedade textInputTraits . Uma das propriedades privadas de UITextInputTraits é insertionPointColor .

Por ser uma propriedade não documentada, a configuração de uma cor personalizada provavelmente fará com que seu aplicativo seja rejeitado na App Store. Se isso não é uma preocupação, isso deve funcionar:

 [[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor] forKey:@"insertionPointColor"]; 
 [[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"]; 

Se você está desenvolvendo no Mac OS X, então você pode tentar o método setInsertionPointColor: Veja a referência NSTextView para mais detalhes.

A abordagem de Durgesh funciona.

Eu também usei essas soluções KVC muitas vezes. Apesar de parecer não documentado, mas funciona. Francamente, você não usa nenhum método privado aqui – somente codificação de valor-chave que é legal.

É drasticamente diferente de [addNewCategoryTextField textInputTraits].

PS Ontem meu novo aplicativo apareceu na AppStore sem nenhum problema com essa abordagem. E não é o primeiro caso quando uso o KVC para alterar algumas propriedades somente leitura (como navigatonBar) ou ivars privados.

Para alterar a color do cursor todo o aplicativo para UITextField/UITextView , o proxy de aparência também pode ser usado como abaixo,

 UITextField.appearance().tintColor = .green UITextView.appearance().tintColor = .green