EDIT: Based on added information from the OP, the following attempts to provide an answer to the question.
As you've described your data, it sounds like your outcome variable is Preference (Left/Right/None), which could be treated as a nominal variable or an ordinal variable. Independent variables: Method (nominal, 3 levels); Activity (nominal, 2 levels). And Subject.
My first piece of advice is to think carefully about what you are trying to determine. For example, in your question, you say want to compare methods. But if the essential question is to compare Typing to Writing, it would simplify things if you could treat each method as a separate experiment.
So how to proceed?
The simplest approach, I think, would be to treat the Methods as separate experiments. This would entail conducting three McNemar-Bowker tests. However, this method won't allow you to statistically compare the Methods to each other directly.
For a more complex approach, you could put everything into a single model. This would probably be a mixed effects model or either multinomial regression or ordinal regression. This might be beyond what you want to try to tackle, and may or may not be reasonably easy in SPSS. The ordinal regression might be a little easier, and the results might be a little easier to interpret. The advantages of this approach is that you should be able to compare among Methods, and among Activities. The disadvantages are being able to build the correct model, and figuring out to get the software to give you all the results you want.
EDIT: Based on added information from the OP, this answer addresses the "one method" case.
Yes, since each subject indicates preference for each of typing and writing, you should use a version of McNemar's test appropriate for tables larger than 2 x 2. This is sometimes called McNemar-Bowker test, or other names.
People may have difficulty setting up the contingency table for McNemar's test. The important thing is that the data can be arranged in a table with the same categories on the x-axis as on the y-axis. I have included an example in R.
Note that this test can be conducted as exact multinomial exact test. See the link in the code for an explanation on how to do this. This might be a desirable way to go, since with 30 participants, you are likely to have low counts in a 3 x 3 table.
For a post-hoc analysis, you can break the table down in to 2 x 2 tables.
For effect size statistics, you can use Cohen's g or odds ratio.
### Adapted from http://rcompanion.org/handbook/H_05.html
Input =("
Writing Left.typing None.typing Right.typing
Left.writing 2 0 1
None.writing 2 6 7
Right.writing 3 4 5
")
Matrix = as.matrix(read.table(textConnection(Input),
header=TRUE,
row.names=1))
Matrix
sum(Matrix)
### [1] 30
mcnemar.test(Matrix)
### McNemar's Chi-squared test
###
### data: Matrix
### McNemar's chi-squared = 3.8182, df = 3, p-value = 0.2818