1

有没有人知道当“.?123”按钮被点击时我们是否从键盘上得到一个代表回调?我们在文本键盘上放置了一个自定义数字键盘,一旦用户点击“.?123”按钮,我们希望将其删除以避免重复键。

有什么建议么。

4

1 回答 1

2

没有任何通知会给你你想要的。事实上,没有任何公共 API 可以让您访问该级别的键盘。我能想到的唯一方法是在 .?123 键上方放置一个透明按钮,并检测到它,然后将触摸传递给底层按钮。按钮视图深埋在视图层次结构中。我使用此代码首先找到键盘,然后记录包含该按钮的视图 (UIKBKeyViews)。下面日志中的五个视图似乎是大写、退格、.?123、空格键和返回视图。

-(void) keyboardUp: (NSNotification*) notification { // called from UIKeyboardDidShowNotification
    UIWindow *tempWindow = [[[UIApplication sharedApplication] windows]objectAtIndex:1]; 
    UIView *keyboard;
    for(int i = 0; i < [tempWindow.subviews count]; i++) {
        keyboard = [tempWindow.subviews objectAtIndex:i];
        if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
           // NSLog(@"Keyboard subviews are: %@",keyboard.subviews);
            NSLog(@"%@",[[[[[[[[[[[[[UIApplication sharedApplication] windows]objectAtIndex:1] contentView]subviews]lastObject]subviews]lastObject]subviews]lastObject]subviews]lastObject]subviews]);
        }
    }
}
于 2012-06-07T05:27:41.500 回答