Disabling keys on keyboard

前端 未结 3 1488
栀梦
栀梦 2021-02-04 15:22

I am new to Objective-C, and I am looking to limit a user from switching from the alphabet portion of a normal keyboard to the numeric/punctuation side. This being said, I would

3条回答
  •  故里飘歌
    2021-02-04 15:54

    I'm not sure if the SDK has changed such that @ppaulojr's answer no longer works, or if I just have things set up weirdly on my system, but with the following tweaks I was able to get it to work!

    The posts linked in @ppaulojr's answer are great (http://www.iphonedevsdk.com/forum/iphone-sdk-development/6573-howto-customize-uikeyboard.html and http://www.iphonedevsdk.com/forum/iphone-sdk-development/6275-add-toolbar-top-keyboard.html), and they helped me to get this to work.

    Apparently the actual keyboard view is now embedded as a subview in some grander UIKeyboard view structure so a bit of recursion is involved. I got this to work:

    -(void) findKeyboard {
    
        NSArray* windows = [[UIApplication sharedApplication] windows];
    
        for (int i = 0; i < [windows count]; i++) {
    
            UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] 
                                                                objectAtIndex:i];
    
            for(UIView *subView in [tempWindow subviews])
            {
                [self checkViews:subView];
            }
        }
    }
    
    -(void)checkViews:(UIView *)inView
    {
        for(UIView *keyboard in inView.subviews)
        {
            NSLog( @"ViewName: %@", [keyboard description] );    // Which view are we looking at
    
            //Check to see if the className of the view we have 
            //referenced is "UIKeyboard" if so then we found
            //the keyboard view that we were looking for
            if([[keyboard description] hasPrefix:@"

    I also found that the best place to call this function is from -(void)textViewDidBeginEditing:(UITextView *)textView like so:

    - (void)textViewDidBeginEditing:(UITextView *)textView {
        NSLog(@"textViewDidBeginEditing");
    
        [self findKeyboard];
    
    }
    

    This does the keyboard modifications as soon as the keyboard is added to the window, but before it actually shows up, so that the whole time it raises from the bottom, it will have been modified.

提交回复
热议问题