If you don't say more, then there are several ways to achieve it:
1, click outside the edit area (UIView)
This is a very intuitive way, when no longer need to use the virtual keyboard, just click on the virtual keyboard and edit the area outside, you can put the keyboard, the following code is UIView
built in the Touch event method function, you can refer to touch Panel/contact Screen/ The basic use of pressure sensors in the article, find out more about the touch event of the method function.
– (void) touchesended: (Nsset *) touches withevent: (Uievent *) Event {
if (![ Mytextview Isexclusivetouch]) {
[Mytextview resignfirstresponder];
}
}
If you want to use this method, please be sure to remember that you operate the picture of Custom Class must be uiview to do.
The Custom Class of the screen is UIView
2. Click outside the editing area (Uicontrol)
The virtual keyboard is put away in the same way as the previous one, but if your touch event is already filled with code, you can consider using the Uicontrol touches up Inside event to close the keyboard by putting the following code with Uicontrol Inside Event link.
– (Ibaction) Dismisskeyboard: (ID) Sender {
[Mytextview resignfirstresponder];
}
If you want to use this method, please be sure to remember that you operate the picture of Custom Class must be uicontrol to do.
The Custom Class of the screen is Uicontrol
Link the method of the keyboard to the Uicontrol event
3. Use the button that makes the keyboard
When there is no editing area to click to close the keyboard, make a button to put up the current virtual keyboard, but also a good way, because the button must appear in the virtual keyboard to display on the screen, so must borrow Nsnotificationcenter To help us determine the current status of the keyboard.
First in the viewDidLoad:
event, the Nsnotificationcenter is registered, telling Nsnotificationcenter our doneButtonshow:
method function.
– (void) Viewdidload {
[super viewdidload];
[[Nsnotificationcenter Defaultcenter] addobserver:self selector: @selector (donebuttonshow:) Name: Uikeyboarddidshownotification Object:nil];
}
Now whenever the virtual keyboard appears, it automatically calls our custom doneButtonshow:
method function, and then just define how the button appears in the method function.
-(void) Donebuttonshow: (nsnotification *) Notification {
Donebutton = [UIButton buttonwithtype: Uibuttontyperoundedrect];
Donebutton.frame = CGRectMake (0, 228,);
[Donebutton settitle:@ "complete edit" forstate:uicontrolstatenormal];
[Donebutton addtarget:self Action: @selector (Hidekeyboard) forcontrolevents:uicontroleventtouchupinside];
[Self.view Addsubview:donebutton];
}
Finally, the function of the method when the implementation button is pressed hideKeyboard:
, be sure to remember to remove the button from the function.
-(void) Hidekeyboard {
[Donebutton Removefromsuperview];
[Mytextview Resignfirstresponder];
}
4. Input characters using judgment
If you want to use an input specific character (such as return
a newline character) to close the keyboard, you must first use the contract in the section within the category, and @interface
you can refer to the use of the Protocol agreement for more information about the agreement.
Following the adoption of the Agreement, the method of expression in the agreement is subsequently implemented textView:shouldChangeTextInRange:replacementText:
, this method function is triggered when the character is entered, and the value of the postback BOOL
represents whether the character is to be used, and the following code is in this method function to close the virtual keyboard using the way in which the input character is judged (the judge character is return
newline character).
– (BOOL) TextView: (Uitextview *) TextView Shouldchangetextinrange: (nsrange) Range Replacementtext: (NSString *) Text {
if () {
[Mytextview resignfirstresponder];
return NO;
}
Return YES
}
Finally, don't forget to viewDidLoad:
UITextView
point the proxy object to yourself in the event so that the program can correctly find the class that is the actual contract method function.
– (void) Viewdidload {
[super viewdidload];
Mytextview.delegate = self;
}
5. Questions about the keyboard masking
If you have encountered in the implementation of the keyboard to cover the editing area, you can refer to the use of the keyboard to Animation
block the problem of Uitextfield, through the function of the Core Graphic Animation
, the keyboard appears in the same time to move the editing area to solve the problem of masking.
6. Summary
These keyboard problems, in the normal development process will encounter, sometimes not good processing. This article is written in great detail, and I hope it will be helpful for everyone's development.