web-dev-qa-db-ja.com

uikeyboardの上にツールバーを追加する

ツールバーがあり、キーボードの上に配置したいと思います。

キーボードの通知にツールバーを追加しようとしましたが、うまくいきませんでした。

私にお知らせください

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    UIView* keyboard;
    for(int i = 0; i < [tempWindow.subviews count]; i++)
    {
        //Get a reference of the current view 
        keyboard = [tempWindow.subviews objectAtIndex:i];

        //Check to see if the description 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:@"<UIKeyboard"] == YES)
        {
            [keyboard addSubview:myToolbar];
        }
    }
17
user198725878

inputAccessoryView が必要だと思います。

基本的に、ビューを作成し、それをテキストフィールドまたはテキストビューの入力アクセサリビューとして設定します。

[textField setInputAccessoryView:inputAccessoryView];
44
vikingosegundo

他の誰かがそれを必要とする場合のコードはここにあります。スタックオーバーフローで見つかりました

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    numberToolbar.barStyle = UIBarStyleBlackTranslucent;
    numberToolbar.items = [NSArray arrayWithObjects:
                         [[UIBarButtonItem alloc]initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(clearNumberPad)],
                         [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                         [[UIBarButtonItem alloc]initWithTitle:@"Apply" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
                     nil];
    [numberToolbar sizeToFit];
    numberTextField.inputAccessoryView = numberToolbar;
}



-(void)clearNumberPad{
    [numberTextField resignFirstResponder];
    numberTextField.text = @"";
}

-(void)doneWithNumberPad{
    NSString *numberFromTheKeyboard = numberTextField.text;
    [numberTextField resignFirstResponder];
}
14
mhrrt

https://github.com/asefnoor/IQKeyboardManager

これは私が見た中で最高のキーボードハンドラーです。テキスト入力を管理するための非常に優れた方法。

その機能の一部1)コードのゼロライン

2)自動的に動作します

3)UIScrollViewはもうありません

4)サブクラスはもうありません

5)手作業はもう必要ありません

6)これ以上#importsはありません

3
i.AsifNoor

iOS 8および9のシンプルなソリューション

textFieldsearchBarなどを初期化します。

customView --キーボードの上部に固定されるビュー。階層にサブビューとして追加しないでください。制約や位置を設定する必要はありません。

[searchBar setInputAccessoryView:self.customView];

- (BOOL)canBecomeFirstResponder{
    return true;
}

- (UIView *)inputAccessoryView {
    return self.customView;

}

customViewを下部に配置し、キーボードを閉じた後に非表示にしない必要がある場合は、オブザーバーを追加します:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:self.view.window];

そして方法

- (void)keyboardDidHide:(NSNotification *)notification {
    [self becomeFirstResponder];
}
1
Jakub Truhlář

キーボードにツールバーを追加したい場合は、適切な場所です。 BSKeyboardを簡単に使用できます。以下の実装を見てください。

.hファイル内

#import "BSKeyboardControls.h"

代理人を追加する

@interface ViewController : UIViewController <BSKeyboardControlsDelegate>

次に、.mファイルをジャンプし、viewDidLoadに移動します。料金所を追加したいテキストフィールドを追加します

self.keyboardControls = [[BSKeyboardControls alloc] initWithFields:@[PINTextField]];
[self.keyboardControls addDelegate:self];

以下のようにactiveFieldを追加する必要があります。

- (void)textFieldDidBeginEditing:(UIView *)textField {
    [self.keyboardControls setActiveField:textField];
}

そして最後のステップは、委任方法の実装です。

 - (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls {
    [super textFieldShouldReturn:self.keyboardControls.activeField];
}

それでおしまい。

詳細およびBSKeyboardファイルのダウンロードについては、以下のリンクを移動できます BSKeyboard Githup Link

1
Emre Gürses