ここで説明したのと同じ問題がありました。inputAccessoryViewにテキストフィールドを追加し、textViewをファーストレスポンダーにする方法と、Tomによって投稿されたソリューションがうまく機能します。今、私の新しい問題は、同じinputAccessoryViewがUITextFieldとUITextViewによって使用されており、どちらが呼び出し元であるかを区別する方法をまだ見つけていないことです。
ここに小さなコードがあります:
@property (unsafe_unretained, nonatomic) IBOutlet UITextField *titleField;
@property (unsafe_unretained, nonatomic) IBOutlet UITextView *reviewField;
viewDidLoadで:
- (void)viewDidLoad
{
[super viewDidLoad];
self.titleField.inputAccessoryView = self.accessorView;
self.reviewField.inputAccessoryView = self.accessorView;
self.accessorView.delegate = self;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(changeFirstResponder:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(fillAccessorView:)
name:UIKeyboardWillShowNotification
object:nil];
}
と2つのハンドラー
- (void) fillAccessorView:(NSNotification *) notification
{
self.accessorView.titleLabel.text = @"MY Title";
}
- (void) changeFirstResponder:(NSNotification *) notification
{
[self.accessorView.textInputField becomeFirstResponder];
}
私はすでにこのように試しました
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(changeFirstResponder:)
name:UIKeyboardDidShowNotification
object:self.titleField];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(fillAccessorView:)
name:UIKeyboardWillShowNotification
object:self.titleField];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(changeFirstResponder:)
name:UIKeyboardDidShowNotification
object:self.reviewField];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(fillAccessorView:)
name:UIKeyboardWillShowNotification
object:self.reviewField];
このように、ハンドラーは呼び出されませんでした:/
誰かがどのように行うかについての考えを持っていますか?