सबसे पहले दृश्य बनाने (मैं इसे एक अलग में किया था निब फ़ाइल और इसे इस तरह) लोड:
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"ReducedNumericKeyboardView"
owner:self
options:nil];
keyBView = (ReducedNumericKeyboardView*)[views objectAtIndex:0];
यह करने के बाद, मैं इसे पाठ क्षेत्र जहां मैं इसे (उपयोग करना चाहते हैं और वास्तव में, यह आपके सवाल का संक्षिप्त उत्तर है के लिए इनपुट दृश्य के रूप में सेट;)) :
[self.propertyEditor setInputView:keyBView];
जब क्षेत्र मैं दृश्य पिल्ला स्क्रॉल (यदि आवश्यक हो) क्षेत्र को कवर नहीं करने के लिए क्या में क्लिक करने:
CGRect textFieldRect = [self.tableViewController.view.window convertRect:propertyEditor.bounds fromView:propertyEditor];
CGRect viewRect = [self.tableViewController.view.window convertRect:self.tableViewController.view.bounds fromView:self.tableViewController.view];
CGFloat midLine = textFieldRect.origin.y+.5*textFieldRect.size.height;
CGFloat numerator = midLine - viewRect.origin.y - MINIMUM_SCROLL_FRACTION*viewRect.size.height;
CGFloat denominator = (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION)*viewRect.size.height;
CGFloat heightFraction = MIN(1, MAX(0, numerator/denominator));
animateDistance = floor(PORTRAIT_USER_INPUT_VIEW_HEIGHT*heightFraction);
CGRect viewFrame = self.tableViewController.view.frame;
viewFrame.origin.y -= animateDistance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:USER_INPUT_ANIMATION_DURATION];
[self.tableViewController.view setFrame:viewFrame];
[UIView commitAnimations];
जब संपादन समाप्त हो गया है, मैं दृश्य नीचे स्क्रॉल करें:
CGRect viewFrame = self.tableViewController.view.frame;
viewFrame.origin.y += animateDistance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:USER_INPUT_ANIMATION_DURATION];
[self.tableViewController.view setFrame:viewFrame];
[UIView commitAnimations];
की कमी मैं का उपयोग इस प्रकार सेट कर रहे हैं:
static const CGFloat USER_INPUT_ANIMATION_DURATION = 0.3;
static const CGFloat PORTRAIT_USER_INPUT_VIEW_HEIGHT = 180;
static const CGFloat MINIMUM_SCROLL_FRACTION = 0.1;
static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.2;
मैंने एक बहुत ही समान प्रश्न का उत्तर दिया (नीचे दिए गए मेरे उत्तर में लिंक किया गया है: http://stackoverflow.com/a/13351686/937822) जो एक कस्टम कीबोर्ड बनाता है। मैंने इसे ओपन सोर्स बनाया और इसे गिटूब पर इस्तेमाल करने के लिए रखा, और हाल ही में हेक्स कीपैड के साथ एक उदाहरण जोड़ा। यदि आप केवल ए-सी और 1-3 चाहते हैं, तो आपको बस अतिरिक्त बटन हटाने की आवश्यकता होगी! – lnafziger