Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Keyboard height

Can I accurately determine the height of the keyboard when it is open?

Comments

  • dave1707dave1707 Mod
    Posts: 7,749

    As far as I know there isn’t any variable that says what the keyboard height is for each device type. You can determine the height manually on your device and use that value.

  • dave1707dave1707 Mod
    Posts: 7,749

    I used this to determine that the keyboard height on my iPad Air is 265 pixels in portrait mode and 352 pixels in landscape mode. Just keep tapping the screen to lower the red line. When it disappears behind the keyboard, that’s the height. You might have to change the starting value of val depending on the device.

    function setup()
        showKeyboard()
        val=370
        fill(255)
        noSmooth()
    end
    
    function draw()
        background(40, 40, 50)
        stroke(255, 0, 0, 255)
        strokeWidth(1)
        line(0,val,WIDTH,val)
        text(val,WIDTH/2,HEIGHT-100)
    end
    
    function touched(t)
        if t.state==BEGAN then
            val=val-1
        end
    end
    
  • Here is a version of this program, but with more comfortable controls

    function setup()
        showKeyboard()
        val = 370
        fill(255)
        noSmooth()
        parameter.boolean("TapMode", false)
        parameter.boolean("Floor", true, function (v)
            val = v and math.floor(val) or val
        end)
        parameter.action("Pasteboard", function ()
            pasteboard.copy(val)
        end)
        parameter.action("Show keyboard", showKeyboard)
    end

    function draw()
        background(0, 0, 0, 255)
        stroke(255, 0, 0, 255)
        strokeWidth(1)
        line(0, val, WIDTH, val)
        fontSize(40)
        text(val, WIDTH/2, HEIGHT-100)
        if TapMode then
            stroke(255, 128)
            line(WIDTH/2, 0, WIDTH/2, HEIGHT)
            fontSize(20)
            text("decrease", WIDTH/4, HEIGHT-HEIGHT/4)
            text("increase", WIDTH-WIDTH/4, HEIGHT-HEIGHT/4)
        else
            fontSize(20)
            text("drag up/down", WIDTH/4, HEIGHT-HEIGHT/4)
        end
    end

    function touched(t)
        if TapMode then
            if t.state == BEGAN then
                val = val + (t.x < WIDTH/2 and -1 or 1)
            end
        else
            val = Floor and math.floor(val + t.deltaY) or val + t.deltaY
        end
    end
  • dave1707dave1707 Mod
    Posts: 7,749

    @Picalines Works Great.

  • dave1707dave1707 Mod
    Posts: 7,749

    What would be nice is to have a keyboard.height variable that has the keyboard height depending on the device being used.

  • dave1707dave1707 Mod
    Posts: 7,749

    Here’s another way to get the keyboard height. It’s a little more involved than the above code, but interesting anyways. Run this program and without doing anything, take a screenshot of the black screen and keyboard. Exit the program and go to Assets Dropbox. From photos, select the screenshot of the keyboard and name it keyboard. Run this program again and it will display the photo of the black screen and keyboard. Tap the screen and a red line will appear down the middle of the screen. When it finds the top of the keyboard it will show the top pixel value of the keyboard.

    displayMode(FULLSCREEN)
    
    function setup()
        showKeyboard()
        y=0
        fill(255)
    end
    
    function draw()
        background(0, 0, 0, 255)
        if img~=nil then 
            sprite(img,WIDTH/2,HEIGHT/2)
            text("top pixel of keyboard is "..y,WIDTH/2,HEIGHT-100)
        end
    end
    
    function touched(t)
        if t.state==BEGAN then
            img=readImage("Dropbox:keyboard")
            y=HEIGHT
            x=WIDTH/2
            while true do
                r,g,b,a=img:get(x,y)
                if r~=0 and g~=0 and g~=0 then
                    y=y-1
                    return
                end
                img:set(x,y,255,0,0,255)
                y=y-1
            end
        end
    end
    
  • SimeonSimeon Admin Mod
    Posts: 5,024

    I'll be adding keyboard height and height change notifications to the layout module soon, sorry for the omission

Sign In or Register to comment.