これは私の最初の投稿であり、iOSでのプログラミングはまったく初めてです。私はxcode4.3を使用していますが、おそらく簡単な質問があります。前へ/次へボタンがあるキーボードの上にツールバーを配置する方法を探しました。xcodeがインターフェイスビルダーを使用していたときにこれを行う方法について、いくつかのヒントを見つけました。しかし、最新バージョンのxcode用のものが見つかりません。だから私はインターネットとアップルの開発サイトから見つけたものを取り、いくつかのコードを思いついた。唯一のことは、それは機能しません!inputAcessoryViewのある行の読み取り専用プロパティへの割り当てというエラーが表示されます。おそらく簡単なことだと思いますが、以前のバージョンから新しいバージョンにコードを転送するときに、何かを台無しにした可能性があります。誰かが私のコードをチェックして、私が間違ったことを教えてもらえますか?本当にありがとう。.h/.mファイルを含めました
#import <UIKit/UIKit.h>
@interface keyboardViewController : UIViewController
@property (retain, nonatomic) IBOutlet UIView *textField1;
@property (retain, nonatomic) IBOutlet UIView *textField2;
@property (nonatomic, retain) UIToolbar *keyboardToolbar;
-(void)resignKeyboard:(id)sender;
-(void)previousField:(id)sender;
-(void)nextField:(id)sender;
@end
含意
#import "keyboardViewController.h"
@interface keyboardViewController ()
@end
@implementation keyboardViewController
@synthesize textField1;
@synthesize textField2;
@synthesize keyboardToolbar;
- (void)viewDidLoad
{
[super viewDidLoad];
if (keyboardToolbar == nil)
{
keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
UIBarButtonItem *previousButton = [[UIBarButtonItem alloc] initWithTitle:@"previous"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(previousField:)];
UIBarButtonItem *nextButton = [[UIBarButtonItem alloc] initWithTitle:@"next"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(nextField:)];
UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemFlexibleSpace) target:nil action:nil];
UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemDone) target:self action:@selector(resignKeyboard:)];
[keyboardToolbar setItems:[[NSArray alloc] initWithObjects:previousButton, nextButton, extraSpace, done, nil]];
textField1.inputAccessoryView = keyboardToolbar;
textField2.inputAccessoryView = keyboardToolbar;
}
}
-(void) resignKeyboard:(id)sender
{
if ([textField1 isFirstResponder])
[textField1 resignFirstResponder];
else if ([textField2 isFirstResponder])
[textField2 resignFirstResponder];
}
-(void) previousField:(id)sender
{
if ([textField1 isFirstResponder])
[textField2 becomeFirstResponder];
else if ([textField2 isFirstResponder])
[textField1 becomeFirstResponder];
}
-(void) nextField:(id)sender
{
if ([textField1 isFirstResponder])
[textField2 becomeFirstResponder];
else if ([textField2 isFirstResponder])
[textField1 becomeFirstResponder];
}
- (void)viewDidUnload
{
[self setTextField1:nil];
[self setTextField2:nil];
[self setKeyboardToolbar:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
@end