The information found on the Internet is relatively fragmented, this part of the learning feel a little bit empty, the content will only include the hidden keyboard and keyboard height of two parts
Hide the keyboard actually in my Learning iOS development of the first program has been practiced, but at that time also Mengmengdongdong, now understand what is the same thing, on the record, but also add a bit of content up.
said that the appearance of the keyboard and hide the input box to get and lose focus is related to the input box to get the focus, the soft keyboard will appear, the input box loses focus, the soft keyboard will disappear. This is a discrepancy with Android. So to get the keyboard to disappear is actually a very simple line of code can be completed
// nametextfiled is the name of the input box.
But where it executes, the triggering mechanism adds a little more step. Let the keyboard disappear first of all must be the text box input is complete (in order to press ENTER) should disappear, it is necessary to achieve uitextfielddelegate-(BOOL) Textfieldshouldreturn: (Uitextfield *) The TextField method and sets the delegate of the input box to the current Viewcontroller. The code is as follows
@interface Hgtabitem2keyboardviewcontroller:uiviewcontroller<uitextfielddelegate>{}@end
Viewdidload's Code
Self.txttextbox. delegate=self;
Add method
-(BOOL) Textfieldshouldreturn: (Uitextfield *) textfield{if(self.txttextbox==TextField) [ TextField Resignfirstresponder]; return true ;}
In peacetime use of a soft keyboard always have a habit: not not once typing are want to finish, when typing hit half and then launched do not want to hit the soft keyboard disappear, will click on the screen blank place, the soft keyboard disappears. It is no longer difficult to learn the touch events now, except that in the-(BOOL) Textfieldshouldreturn: (Uitextfield *) TextField method, the Resignfirstresponder method is called, Also call Self.view endediting in the event of touch, this touch event can use Touchesended:withevent: or you can use UITapGestureRecognizer
-(void) touchesended: (Nsset *) touches withevent: (uievent *)event{[Self.view endediting: true ];}
Declaring code
@interface Hgtabitem2keyboardviewcontroller:uiviewcontroller<uitextfielddelegate,uigesturerecognizerdelegate>{} @end
Code in the Viewdidload
UITapGestureRecognizer *gestrue=[[UITapGestureRecognizer alloc]initwithtarget:self Action: @selector (SingleTap :)];gestrue.numberoftouchesrequired=1; [ Self.view Addgesturerecognizer:gestrue];
Add method
-(void) Singletap: (UITapGestureRecognizer *) gecognizer{[self.txttextbox endediting:True ];}
handling the keyboard height is actually taking advantage of the keyboard's global events, and there's a saying on the web iOS5.0 later, the keyboard will be in different input language height will change, but after I practice in the simulator, I found that the height of the difference does not exist, but this keyboard height is still useful, such as QQ , when the keyboard appears, the entire view will move upward, moving the distance is the keyboard height, this is used to the keyboard height. Keyboard height is a global event that uses the keyboard
- Uikeyboardwillshownotification;
- Uikeyboarddidshownotification;
- Uikeyboardwillhidenotification;
- Uikeyboarddidhidenotification;
in the iOS5.0 two more events have been added
- Uikeyboardwillchangeframenotification
- Uikeyboarddidchangeframenotification
The above events look at the name and know when it is triggered, but Changeframe the effect of the event is not obvious, when it is triggered when the keyboard height changes Show and the Changeframe two events, or stick the code down.
in the Viewdidload Add the following methods
Object Objectobject: nil];
Then add the following event method
- (void) Didreceivememorywarning{[super didreceivememorywarning];//Dispose of any resources the can be recreated.} -(BOOL) Textfieldshouldreturn: (Uitextfield *) textfield{if(self.txttextbox==TextField) [TextField Resignfirstresponder];return true;} -(void) Keyboardwillchange: (Nsnotification *) Notif{nslog (@"Keyboardwillchange");} -(void) Keyboarddidchange: (nsnotification*) notif{}-(void) Keyboardwillshow: (nsnotification*) Notif
{//keyboard height'll be 216, on IOS version older than 5.0CGRect boxframe=SELF.VIEW.FRAME;BOXFRAME.ORIGIN.Y=-[[[notif userinfo]objectforkey:uikeyboardframeenduserinfokey]cgrectvalue].size.height+Self.tabBarController.tabBar.frame.size.height;//;[UIView animatewithduration:0.3fanimations:^{self.view.frame=Boxframe;}]; NSLog (@"Keyboardwillshow");}-(void) Keyboardwillhide: (nsnotification*) Notif
{CGRect Boxframe=SELF.VIEW.FRAME;BOXFRAME.ORIGIN.Y=0;//216;[UIView animatewithduration:0.3fanimations:^{self.view.frame=Boxframe;}];}
When clicked, the text box moves up, but the text box is just at the top of the keyboard, or at the bottom of the view. When the keyboard is hidden, the text box just moves down and ends up just below the bottom of the screen.
iOS Learning notes-keyboard handling