1
나는 사용자가 테이블 아래쪽에 텍스트 필드 셀을 보여주는 편집 단추를 탭하도록함으로써 알림보기 응용 프로그램과 유사한 새 항목을 테이블보기에 추가하는 응용 프로그램을 가지고 있습니다. 나는 테이블에 많은 행이있을 때 키보드가 방해받지 않도록 테이블을 조정해야합니다. 나는 키보드가 표시 될 때의 알림에 가입하여이 일을하고있다 :여러보기에서 keyboardDidShow를 어떻게 처리합니까?
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardDidShow:)
name: UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardDidHide:)
name: UIKeyboardDidHideNotification
object:nil];
}
...
...
-(void) keyboardDidShow: (NSNotification *)notif
{
// If keyboard is visible, return
if (self.keyboardVisible)
{
return;
}
// Get the size of the keyboard.
NSDictionary* info = [notif userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
// Adjust the table view by the keyboards height.
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0);
NSIndexPath *path = [NSIndexPath indexPathForRow:self.newsFeeds.count inSection:0];
[self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];
self.keyboardVisible = YES;
}
는 그러나, 나는 사용자가 행을 추가 할 수 있도록 테이블도 도청 될 수있는 새로운보기는 응용 프로그램에 푸시됩니다. 이 뷰에는 텍스트 뷰가 있으며 사용자가이 뷰를 탭하면 키보드에서 첫 번째 viewcontroller가 여전히 알림을 받음으로써 충돌이 발생합니다.
알림을 무시하거나 새로운보기를 눌러도 알림이 표시되지 않도록하려면 어떻게해야합니까?
viewDidAppear에서 관찰자로 클래스를 추가하고 viewWillDisappear에서이를 제거 할 수 있습니다. – InsertWittyName
나는 이전에 이름으로 제거를 시도했지만 예외가 발생했습니다. 이유는 확실하지 않지만 ... – lehn0058
왜 이것이 작동하지 않는지 알았습니다. 실수로 [self viewWillDisappear : animated]라고 불렀습니다. 대신 [super viewWillDisappear : animated]; 나를 무한 루프로 만들었습니다. viewWillDisappear를 사용하면 완벽하게 작동합니다. – lehn0058