views:

428

answers:

2

I have a weird behaviour that has only shown up in the last week. I don't use IB, all the controls are created in code.

I have a text field with a keyboard active. The first time I load the text field and use the keyboard, everything works normally. The second time I use it, the typed text does not show in the text field. However, the text is in the text field programmatically. For example, I can use it to execute a search. When the keyboard closes, the text appears.

Some of my UITextFields have misaligned text. For example, I write "hello", and instead of displaying centered inside the field like normal, it displays shifted several pixels downward to the extent that the bottom of the text is cut off. It's almost as if another view is chopping the bottom off the text by obscuring it.

I use three20, but according to http://groups.google.com/group/three20/browse_thread/thread/d7c4bc1ee2f9590d#, Xcode is suspected of causing the problem. I seen the behavior on 2 diferent macs, one running with Snow Leopard (10.6) and the other with Leopard (10.5).

This is how the problem looks in Xcode:

iPhone

It is not obvious, but there is text in that search field. Notice that the placeholder text is not show. However, if I hit Search, the code executes with the entered text.

This is how the app appears in the simulator:

Screenshot XCode

+1  A: 

I've seen that happen with text fields and affine transforms. If you rotate a text field using a transform, the text shows up in a seemingly random part of the superview. If you use a transform to move the text field to make room for the keyboard, you might be seperating the embedded text editor from the field itself. That would also explain why the text is in the code because the text attribute of the text field is not affected by the visual layout of the UI.

TechZen
I don't rotate the views. Always run in portrait mode...
mamcx
A: 

I finally find the reason.

I call [textField becomeFirstResponder] in a function called from loadView. But I move it to viewDidAppear and everything work Ok...

mamcx
You should hit the check mark next to this question so the system knows it has been answered.
TechZen