I am trying to use a customized keyboard in my application, but I am hitting problems when trying to restrict it to one particular UITextField.
I based my code on this X
That project works great, but when I add an extra UITextField, the custom key gets put into the keyboard for that text field too.
You can set the keyboard type for a UITextField
instance, e.g.:
[myTextField setKeyboardType:UIKeyboardTypeDefault];
or:
myTextField.keyboardType = UIKeyboardTypeDefault;
Search the Xcode help on UITextInputTraits Protocol
for a list of UIKeyboardType
constants.
Couldn't get any of the above to work. Had to do it manually:
if ([companyName isFirstResponder]) {
// ...............
}
else if ([notes isFirstResponder]) {
//.............
}
}
You can write a UIView category method to find the first responder.
- (UIView *)firstResponder
{
if ([self isFirstResponder])
{
return self;
}
for (UIView *view in self.subviews)
{
UIView *firstResponder= [view firstResponder];
if (firstResponder)
{
return firstResponder;
}
}
return nil;
}
Then in your - (void)keyboardWillShow:(NSNotification *)notification
method you can use it like this
UITextField *textField = (UITextField *)[self firstResponder];
I have achieved this before by comparing the object with the UI object that I am interested in. Like this:
if(notification.object == exampleViewController.textField)
{
...
}