program tip

UITextField에서 리턴 키를 비활성화 / 활성화하는 방법은 무엇입니까?

radiobox 2020. 11. 17. 07:59
반응형

UITextField에서 리턴 키를 비활성화 / 활성화하는 방법은 무엇입니까?


에서 반환 키를 프로그래밍 방식으로 활성화 또는 비활성화하는 방법이 UIKeyboard있습니까? 내가 찾을 수있는 가장 가까운 것은 enablesReturnKeyAutomatically이지만, 그것은 그것을 전혀 비활성화할지 여부를 알려줄 것입니다.


UIKeyboard 객체 자체를 얻을 수 있다면 (SDK에 노출되지 않은 것이므로 이러한 호출을 사용하면 Apple이 만족하지 않을 수 있음) 편리한 setReturnKeyEnabled : 멤버 함수가 있습니다.

id keyboard = [self magicallyGetAUIKeyboardInstance];
[keyboard setReturnKeyEnabled: NO];

( Erica Sadun의 2.2 iPhone 프레임 워크 덤프 를 통해 )

의 구현은 여기magicallyGetAUIKeyboardInstance 에 설명되어 있습니다 .


다음 코드 세그먼트가 도움이 될 수 있습니다.

textfield.enablesReturnKeyAutomatically = YES;

이것은 UITextInputTraits의 iPhone SDK에서 공개적으로 사용할 수 있습니다. 이를 사용하면 텍스트 필드에 입력 텍스트가 없을 때 리턴 키가 비활성화됩니다.


UITextFieldenablesReturnKeyAutomatically속성은 Interface Builder에서 바로 설정할 수 있습니다. 텍스트 필드를 선택하고 Attributes inspector를여십시오. Tharindu가 말했듯이 이것은 텍스트 입력 여부에 따라 리턴 키를 자동으로 활성화 및 비활성화합니다.

여기에 이미지 설명 입력

물론, 코드에서 이것을 변경해야하는 경우에도를 사용하여 프로그래밍 방식으로 설정할 수 있습니다 nameTextField.enablesReturnKeyAutomatically = true.

반대표를 해결하기 위해 편집 :

그렇지 않으면 명령에서 리턴 키를 활성화 및 비활성화하는 공식적인 방법이 없습니다. 이를 수행하기 위해 개인 API를 사용하지 않는 것이 좋습니다. 또는 textFieldShouldReturn:델리게이트 메서드를 사용하고 거기에 조건부 / 검증을 넣고 그에 따라 응답 할 수 있습니다 .


UITextFieldhasText속성을 재정 의하여 이를 달성 할 수 있습니다 .

class CustomTextField : UITextField {
    override public var hasText: Bool {
        get {
            return evaluateString(text)
        }
    }
}

어디 evaluateString(_ text: String?) -> Bool예를 들어, 글자 수에 대한 필요한 입력 기준에 대한 검사.

물론이와 함께 만 작동합니까 enablesReturnKeyAutomatically = true온 세트를 UITextField.

내 대답이 Objective-C로 적시에 적시에 작성되지 않았 음을 알고 있지만 다른 곳에서는 답을 찾을 수 없었고이 질문이 다른 스레드에서 정기적으로 언급되는 점을 감안할 때 여기가 가장 좋은 장소라고 생각합니다. 게시하십시오.


한 가지 좋은 아이디어는 어디에서나이 클래스에 액세스 할 수있는 하나의 파일을 만드는 것입니다. 다음은 코드입니다.

UIKeyboard.h

#import <UIKit/UIKit.h> 

@interface UIApplication (KeyboardView)

    - (UIView *)keyboardView; 

@end

UIKeyboard.m

#import "UIKeyboard.h"

@implementation UIApplication (KeyboardView)

- (UIView *)keyboardView
{
    NSArray *windows = [self windows];
    for (UIWindow *window in [windows reverseObjectEnumerator])
    {
        for (UIView *view in [window subviews])
        {
            if (!strcmp(object_getClassName(view), "UIKeyboard"))
            {
                return view;
            }
        }
    }

    return nil;
}

@end

이제 자신의 클래스에서이 클래스를 가져오고 액세스 할 수 있습니다.

#import "UIKeyboard.h"

    // Keyboard Instance Pointer.
    UIView *keyboardView = [[UIApplication sharedApplication] keyboardView];

이 클래스에 대한 전체 문서는 http://ericasadun.com/iPhoneDocs/_u_i_keyboard_8h-source.html에서 찾을 수 있습니다.

자세한 정보는 여기에서 찾을 수 있습니다. http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html


다음은 문서화 된 API에서 사용할 수 있지만 Enter 키가 비활성화 된 경우 시각적 피드백을 제공하지 않는 기술입니다.

- (void)setup {
    // Or in init
    self.textField.delegate = self;
}

// <UITextFieldDelegate>
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    // substitute your test here
    return [textField.text rangeOfString:@"@"].location != NSNotFound;
}

여기에있는 다른 답변은 다음과 함께 사용할 수 있습니다.

[textField addTarget:self
              action:@selector(validateTextField:)
    forControlEvents:UIControlEventEditingChanged];

사용자가 입력 할 때 동적 시각적 피드백을 제공합니다.


UITextField를 사용해보십시오! 이 문자열을 받고 반환보다 사라졌습니다!

참고 URL : https://stackoverflow.com/questions/788323/how-to-disable-enable-the-return-key-in-a-uitextfield

반응형