programing

아이폰의 화면 키보드 높이는 얼마입니까?

elecom 2023. 7. 27. 21:36
반응형

아이폰의 화면 키보드 높이는 얼마입니까?

세로 높이와 가로 높이를 점으로 측정한 값입니다.

iOS 7.1에서 키보드 프레임을 결정하기 위해 다음과 같은 방법을 사용했습니다.

내 뷰 컨트롤러의 init 메서드에서, 나는 등록했습니다.UIKeyboardDidShowNotification:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(keyboardOnScreen:) name:UIKeyboardDidShowNotification object:nil];

그리고 다음 코드를 사용했습니다.keyboardOnScreen:키보드 프레임에 액세스할 수 있습니다.이 코드는 다음을 가져옵니다.userInfo알림에서 사전을 찾은 다음 액세스합니다.NSValue와 관련된.UIKeyboardFrameEndUserInfoKey그런 다음 CGRect에 액세스하여 뷰 컨트롤러의 뷰 좌표로 변환할 수 있습니다.여기서 해당 프레임을 기반으로 필요한 모든 계산을 수행할 수 있습니다.

-(void)keyboardOnScreen:(NSNotification *)notification 
 {
        NSDictionary *info  = notification.userInfo;
        NSValue      *value = info[UIKeyboardFrameEndUserInfoKey];

        CGRect rawFrame      = [value CGRectValue];
        CGRect keyboardFrame = [self.view convertRect:rawFrame fromView:nil];

        NSLog(@"keyboardFrame: %@", NSStringFromCGRect(keyboardFrame));
 }

스위프트

Swift와 동등한 기능을 구현:

NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidShow), name: UIResponder.keyboardDidShowNotification, object: nil)


@objc
func keyboardDidShow(notification: Notification) {
    guard let info = notification.userInfo else { return }
    guard let frameInfo = info[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else { return }
    let keyboardFrame = frameInfo.cgRectValue
    print("keyboardFrame: \(keyboardFrame)")
}

iOS 8에서는 화면 키보드의 크기가 달라질 수 있습니다.화면 키보드가 항상 표시되거나(특정 높이로) 보이지 않는다고 가정하지 마십시오.

이제 iOS 8을 사용하면 텍스트 예측 영역을 켜고 끌 수 있습니다.그리고 그들이 이것을 할 때, 그것은 앱의 시동을 걸 것입니다.keyboardWillShow사건이 또 발생했습니다.

이것은 많은 레거시 코드 샘플을 파괴할 것이고, 그것은 다음을 작성할 것을 권고했습니다.keyboardWillShow이벤트 - 화면 키보드의 현재 높이만 측정하고 이 (절대)만큼 페이지에서 컨트롤을 위 또는 아래로 이동합니다.

enter image description here

다시 말해, 샘플 코드가 보이면, 그것은 단지 당신에게 추가하라고 지시합니다.keyboardWillShow이벤트에서 키보드 높이를 측정한 다음 이 양만큼 컨트롤의 높이 크기를 조정하면 더 이상 작동하지 않습니다.

위의 예에서는 아래 사이트의 샘플 코드를 사용하여 수직 제약 조건을 애니메이션화했습니다.constant가치.

자동 레이아웃 연습

앱에서 제약 조건을 추가했습니다.UITextView화면 하단으로 설정합니다.화면이 처음 나타났을 때 이 초기 수직 거리를 저장했습니다.

그럼 언제든지.keyboardWillShow이벤트가 시작되면 (새) 키보드 높이를 이 원래 제약 조건 값에 추가합니다(그래서 제약 조건은 컨트롤의 높이 크기를 조정합니다).

enter image description here

네, 못생겼어요

그리고 Xcode 6의 끔찍하게 고통스러운 자동 레이아웃이 화면 하단이나 화면 키보드 상단에 컨트롤 하단을 부착할 수 없다는 것에 약간 화가 나거나 놀랐습니다.

뭔가 놓친 게 있는 것 같아요.

제 정신이 아닌 이상.

키보드 높이는 세로 모드의 경우 216개, 가로 모드의 경우 162개입니다.

원천

버전 참고: iOS 9 및 10에서는 사용자 지정 키보드 크기를 지원하기 때문에 더 이상 이 값을 사용할 수 없습니다.

이는 모델과 QuickType 막대에 따라 달라집니다.

enter image description here

http://www.idev101.com/code/User_Interface/sizes.html

키보드 높이는 모델, QuickType 막대, 사용자 설정에 따라 다릅니다.최상의 접근 방식은 다항식으로 계산됩니다.

스위프트 3.0

var heightKeyboard : CGFloat?

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardShown(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
}

func keyboardShown(notification: NSNotification) {
   if let infoKey  = notification.userInfo?[UIKeyboardFrameEndUserInfoKey],
       let rawFrame = (infoKey as AnyObject).cgRectValue {
       let keyboardFrame = view.convert(rawFrame, from: nil)
       self.heightKeyboard = keyboardFrame.size.height
       // Now is stored in your heightKeyboard variable
   }
}

최신 답을 찾을 수 없어서 iOS 11.0 Simulators:

iOS 11 장치 화면 높이 초상화 풍경.
아이폰 4s 480.0 216.0 162.0
아이폰5, 아이폰5s, 아이폰SE 568.0 216.0 162.0
아이폰6, 아이폰6s, 아이폰7, 아이폰8, 아이폰X 667.0 216.0 162.0
아이폰6플러스, 아이폰7플러스, 아이폰8플러스 736.0 226.0 162.0
iPad 5세대, iPad Air, iPad Air 2, iPad Pro 9.7, iPad Pro 10.5, iPad Pro 12.9 1024.0 265.0 353.0

제가 만든 표는 iPhone과 iPad 키보드의 높이를 모두 포함하고 있습니다. 가로와 세로 모드 모두 도구 모음을 켜고 끌 수 있습니다.

저는 당신의 코드에서 이 차원들을 어떻게 사용할 수 있는지 설명하기도 했습니다.

보기를 레이아웃하기 전에 키보드의 치수를 알아야 하는 경우에만 이러한 치수를 사용해야 합니다.그렇지 않으면 다른 답변의 솔루션이 더 잘 작동합니다.

enter image description here

언급URL : https://stackoverflow.com/questions/11284321/what-is-the-height-of-iphones-onscreen-keyboard

반응형