У меня есть текстовое поле в ячейке tableview, и я хочу назначить пользовательскую клавиатуру ввода. Я могу заставить клавиатуру отобразиться, но похоже, что соответствующий класс контроллера не подключен. Когда я нажимаю любую кнопку, я получаю ошибку EXC_BAD_ACCESS или ошибку «непризнанный селектор».EXC_BAD_ACCESS Ошибка при переключении на ARC
Вот код, где я связать текстовое поле в Tableview клетки к пользовательской клавиатуре ввода
CustomNumberPadViewController *calcKeyboard = [[CustomNumberPadViewController alloc] initWithNibName:@"CustomNumberPadView" bundle:nil];
calcKeyboard.equationViewController = self;
cell.variableValue.inputView = calcKeyboard.view;
У меня есть методы действий, привязанные к кнопкам calkKeyboard, и при нажатии кнопки, эти методы не являются называемый. Я даже создавал метод «viewWillAppear», который также не вызывается, когда появляется клавиатура.
Я проверил класс цифровой клавиатуры и подключен к CustomNumberPadViewController, который содержит вышеупомянутые методы.
Вот код для моего CustomNumberPadViewController:
#import <UIKit/UIKit.h>
#import "EquationViewController.h"
@class EquationViewController;
@interface CustomNumberPadViewController : UIViewController <UITextFieldDelegate>{
EquationViewController *equationViewController;
}
@property (nonatomic, strong) EquationViewController *equationViewController;
-(IBAction)buttonPressed:(id)sender;
-(IBAction)buttonDonePressed:(id)sender;
-(IBAction)buttonDelPressed:(id)sender;
@end
И связано реализация (для краткости я вырезал внутренности методов действий и просто оставили свои отладочные логи):
#import "CustomNumberPadViewController.h"
#import "VariableCellController.h"
@implementation CustomNumberPadViewController
@synthesize equationViewController;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
-(void) viewWillAppear:(BOOL)animated
{
UIColor *backgroundPatern = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"calculatorBackground.png"]];
self.view.backgroundColor = backgroundPatern;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
#pragma mark - Action Methods
-(IBAction)buttonPressed:(id)sender{
NSLog(@"61-CNPVC");
}
-(IBAction)buttonDonePressed:(id)sender{
NSLog(@"117-CNPVC");
}
-(IBAction)buttonDelPressed:(id)sender{
NSLog(@"125-CNPVC");
}
@end
Это произошло, я попытался сделать это раньше, но, должно быть, испортил какой-то синтаксис и перешел к другим идеям. Благодаря тонну. Забавно, что у меня не было этой проблемы, когда я не использовал ARC. Но я думаю, что у меня была утечка памяти ... – Jbryson