Как мне установить этот скрипт в PhoneGap для iOS - PullRequest
6 голосов
/ 04 января 2012

Я не знаю Objective-C, поэтому я использую PhoneGap для создания приложения для iOS.В PhoneGap для iOS есть большой недостаток.На клавиатуре постоянно есть помощник по формам (кнопки «следующий», «предыдущий» и «готово»). В Интернете очень мало информации о том, как избавиться от этого, все вопросы Stackoverflow об этом говорят, что это практическиневозможно.Но через некоторое время я наткнулся на этот урок.Нижний абзац говорит вам, как это сделать.И это работает, я скачал и протестировал готовое приложение.

Но так как я понятия не имею, как сделать что-либо почти в Xcode или Objective-C, я не знаю, какие файлы идут в двух разделах кодав, он не говорит в учебнике.

Может кто-нибудь сказать мне, где в файлах приложений PhoneGap это идет?Я был бы очень благодарен, это беспокоило меня весь день.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

И это

RichTextEditorViewController *viewController = [[RichTextEditorViewController alloc] initWithNibName:@"RichTextEditorViewController" bundle:nil];
self.viewController = [[UINavigationController alloc] initWithRootViewController:viewController];

Также это

- (void)removeBar {
    // Locate non-UIWindow.
    UIWindow *keyboardWindow = nil;
    for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {
        if (![[testWindow class] isEqual:[UIWindow class]]) {
            keyboardWindow = testWindow;
            break;
        }
    }

    // Locate UIWebFormView.
    for (UIView *possibleFormView in [keyboardWindow subviews]) {       
        // iOS 5 sticks the UIWebFormView inside a UIPeripheralHostView.
        if ([[possibleFormView description] rangeOfString:@"UIPeripheralHostView"].location != NSNotFound) {
            for (UIView *subviewWhichIsPossibleFormView in [possibleFormView subviews]) {
                if ([[subviewWhichIsPossibleFormView description] rangeOfString:@"UIWebFormAccessory"].location != NSNotFound) {
                    [subviewWhichIsPossibleFormView removeFromSuperview];
                }
            }
        }
    }
}

Спасибо!

Ответы [ 2 ]

16 голосов
/ 14 февраля 2012

Я столкнулся с необходимостью сделать это сам.Я разработчик IOS, но мне нужно было использовать телефонный разрыв, чтобы снизить расходы на многоплатформенную разработку.

В любом случае, я исправил твой код.Так как, я думаю, вы не хотите тратить свое время на изучение obj-c, вам просто нужно заменить содержимое вашего MainViewController.m следующим:

#import "MainViewController.h"

@implementation MainViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    }
    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)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return [super shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

- (void) removeBar {
    // Locate non-UIWindow.
    UIWindow *keyboardWindow = nil;
    for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {
        if (![[testWindow class] isEqual:[UIWindow class]]) {
            keyboardWindow = testWindow;
            break;
        }
    }

    // Locate UIWebFormView.
    for (UIView *possibleFormView in [keyboardWindow subviews]) {       
        // iOS 5 sticks the UIWebFormView inside a UIPeripheralHostView.
        if ([[possibleFormView description] rangeOfString:@"UIPeripheralHostView"].location != NSNotFound) {
            for (UIView *subviewWhichIsPossibleFormView in [possibleFormView subviews]) {
                if ([[subviewWhichIsPossibleFormView description] rangeOfString:@"UIWebFormAccessory"].location != NSNotFound) {
                    [subviewWhichIsPossibleFormView removeFromSuperview];
                }
            }
        }
    }
}

- (void)keyboardWillShow:(NSNotification*) notification {
    // remove the bar in the next runloop (not actually created at this point)
    [self performSelector:@selector(removeBar) withObject:nil afterDelay:0];
}

@end

В качестве предупреждения, этонемного хакерское решение (но в то же время использует пробел в телефоне!) и может сломаться в будущих версиях iOS.Но я думаю, мы исправим это, когда дело доходит до ...

0 голосов
/ 24 сентября 2014

Существует ряд плагинов PhoneGap для улучшения управления клавиатурой. Хотя я еще не использовал это, похоже, что плагин Ionic Keyboard может предоставить то, что вы пытаетесь сделать.

«Скрыть панель клавиатуры с кнопками« Следующая »,« Предыдущая »и« Готово ».» Метод: cordova.plugins.Keyboard.hideKeyboardAccessoryBar

Чтобы добавить это: Cordova плагин добавить https://github.com/driftyco/ionic-plugins-keyboard.git

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...