ツールバーがあり、キーボードの上に配置したいと思います。
キーボードの通知にツールバーを追加しようとしましたが、うまくいきませんでした。
私にお知らせください
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];
}
}
inputAccessoryView が必要だと思います。
基本的に、ビューを作成し、それをテキストフィールドまたはテキストビューの入力アクセサリビューとして設定します。
[textField setInputAccessoryView:inputAccessoryView];
他の誰かがそれを必要とする場合のコードはここにあります。スタックオーバーフローで見つかりました
- (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];
}
https://github.com/asefnoor/IQKeyboardManager
これは私が見た中で最高のキーボードハンドラーです。テキスト入力を管理するための非常に優れた方法。
その機能の一部1)コードのゼロライン
2)自動的に動作します
3)UIScrollViewはもうありません
4)サブクラスはもうありません
5)手作業はもう必要ありません
6)これ以上#importsはありません
iOS 8および9のシンプルなソリューション
textField
、searchBar
などを初期化します。
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];
}
キーボードにツールバーを追加したい場合は、適切な場所です。 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