Half of keypad not functional

Sorry if im posting in the wring section as im new to the forum.I just recived a 4 by 4 keypad and wired it up to arduino pins 7,6,5,4,3,2,1 and 0 then configured the library appropriately

byte rowPins[numRows] = {7,6,5,4}; //Rows 0 to 3
byte colPins[numCols]= {3,2,1,0}; //Columns 0 to 3

I also have a 1.8 inch adafruit display hooked up which works fine and i have it print key presses to the screen except only half the rows will cause a letter or number to pop up.The issue is not with being able to display only certain characters as i switched out '1' for 'd' and it printed fine.What am i doing wrong or what should i double check?
I followed this guide for getting wired up and using the library:

Full Code:

#include <Key.h>
#include <Keypad.h>

#include <Adafruit_ST7735.h>

const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad

//keymap defines the key pressed according to the row and columns just as appears on the keypad
char keymap[numRows][numCols]= 
{
{'1', '2', '3', 'A'}, 
{'4', '5', '6', 'B'}, 
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

//Code that shows the the keypad connections to the arduino terminals
byte rowPins[numRows] = {7,6,5,4}; //Rows 0 to 3
byte colPins[numCols]= {3,2,1,0}; //Columns 0 to 3

//initializes an instance of the Keypad class
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>


// For the breakout, you can use any 2 or 3 pins
// These pins will also work for the 1.8" TFT shield
#define TFT_CS     10
#define TFT_RST    9  // you can also connect this to the Arduino reset
                      // in which case, set this #define pin to 0!
#define TFT_DC     8

// Option 1 (recommended): must use the hardware SPI pins
// (for UNO thats sclk = 13 and sid = 11) and pin 10 must be
// an output. This is much faster - also required if you want
// to use the microSD card (see the image drawing example)
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

// Option 2: use any pins but a little slower!
#define TFT_SCLK 13   // set these to be whatever pins you like!
#define TFT_MOSI 11   // set these to be whatever pins you like!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

void setup()
{
Serial.begin(9600);
 tft.initR(INITR_BLACKTAB);
 tft.fillRect(0,0,tft.width(),tft.height(),ST7735_BLACK);
}

//If key is pressed, this key is stored in 'keypressed' variable
//If key is not equal to 'NO_KEY', then this key is printed out
//if count=17, then count is reset back to 0 (this means no key is pressed during the whole keypad scan process
void loop()
{
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY)
{


tft.print(keypressed);
}
}

Pins 0 and 1 are the serial port and normally cannot be used for other purposes.

Any way i can use them?could i declare them as digital pins with pinMode()

After trying to you cant declare them and make it work so still really confused also turns out its the columns not working oops

I accidentally had a serial port open which prevented me from using them but i got rid of it and now it works!

The chart in the link you posted shows Arduino pins D2 - D9 are used as inputs. They should be declared as such using pinMode( 2, INPUT ) , etc. As jremington said, avoid D0 and D1 as they're tied to the serial port which the monitor uses.